WordPressのショートコードでPythonを動かしてみた

スポンサーリンク

ショートコードの起動

functions.phpを触ってショートコードを動かしてみた。下の1行がそれ。

ショートコード作ってみた!

「ショートコード作ってみた!」と表示されているはず。実際には下のように書いてある。ただし、ショートコードが動作しないようにカッコは全角文字で書いてあるので、コピペするときは注意。

[shortcode_test_1]

functions.phpはこのようにした。

function shortcode_test_1() {
return "ショートコード作ってみた!";
}
add_shortcode('shortcode_test_1', 'shortcode_test_1');

「ショートコード」でググるとやり方はすぐにわかるのだけれど、意外な落とし穴がfunctions.phpの格納場所。(WordPressのインストールフォルダ)/wp-content/themes/(テーマ名) の下にあるfunctions.phpを編集すること。同じ名前のファイル名が他のフォルダにもあり、それをイジるとWordPress全体が動かなくなってしまう。

もう一つの方法は、WordPressのメニュー「外観」→「テーマの編集」で、画面右側の「テーマファイル」から「テーマのための関数(functions.php)」を選ぶ。いずれにしても、functions.phpを触るときはバックアップが必須。

引数付きのショートコード

次はショートコードに引数を渡す例。引数のデフォルト値は関数内で定義している。

function shortcode_test_2($atts) {
$atts = shortcode_atts(array(
"name" => "名無し",
"num" => -1
),$atts);
return $atts['name']."さんの出席番号は".$atts['num']."です";
}
add_shortcode('shortcode_test_2', 'shortcode_test_2');

引数を指定しないと関数内のデフォルト値が使われる。このように書くと、

[shortcode_test_2]
こうなる
名無しさんの出席番号は-1です
引数を指定すると、
[shortcode_test_2 name="山田太郎" num=25]
こうなる
山田太郎さんの出席番号は25です

ショートコードのPHP経由でPythonを呼び出す

ショートコードからPythonを呼び出してみた。まず、Pythonのコードはこんな感じ。1行目はこのサーバー(CoreServer)でPython3を動かすためのおまじない。
#!/usr/local/bin/python3
print("I am PYTHON!!")
print("Called from PHP.")
呼び出す側のショートコードの関数はこれ。Pythonの出力の1行ごとが文字列の配列になって返ってくるはず。($commandの中のxxxxはサーバー内のディレクトリ名)
// Pythonの起動
function call_python($atts) {
$command="python ~/public_html/xxxx/".$atts['file'];
exec($command,$output);
return $output[0]."<br>".$output[1];
}
add_shortcode('call_python', 'call_python');
ショートコードを動かすと、
[call_python file="pytest.py"]
こうなる
I am PYTHON!!
Called from PHP.
 Pythonが出したデータが届いている。
 
 

 

コメント

タイトルとURLをコピーしました