概要
WordPressでPHPをHTML内に書いても、拡張子phpのファイルにならないため、そのままでは実行されない。
.htaccessを変更することでhtmlファイルでもPHPが呼ばれるようになるらしいが、それよりもPHPを外部ファイルとして持っておいて、HTMLからそこで定義された関数を呼び出す方法の方が、改変部分が少なそう。
方法1:親テーマのfunctions.phpに加える
親テーマディレクトリ下のfunctions.phpにショートコードの関数を書き加え、HTMLから呼び出す方法。
たとえばfunctions.phpの最後に以下を追加。場所は最後の方がよいか。
1 2 3 4 5 |
function shortcode_func() { return "Hello World!"; } add_shortcode('short_code_test', 'shortcode_func'); |
そして、WordPressのエディタ画面で以下を記述。
1 |
[short_code_test] |
これで上記の記述の部分でショートコードが実行され、この部分に”Hello World!”が表示される。
ただしこの方法は、親テーマのfunctions.phpを加工しているので望ましくない。
方法2:子テーマのfunctions.phpに加える
子テーマのfunctions.phpに以下を記述する。今回はコード全体を<?php
~?>
で囲んでいる。
1 2 3 4 5 6 7 |
<?php function shortcode_func() { return "Hello World!"; } add_shortcode('short_code_test', 'shortcode_func'); ?> |
そして方法1と同じように、HTMLからショートコードを呼び出す。
1 |
[short_code_test] |
この方法だと、親テーマのバージョンアップなどの影響を受けないのでよい。
ただし、ショートコードが増えると、一つのfunctions.phpファイルで管理をするのが大変になってくる。
方法3:別ファイルのPHPを呼ぶ
functions.phpに以下を記述。
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php function shortcode_by_file($params = array()) { extract(shortcode_atts( array('file' => 'default'), $params)); ob_start(); include(STYLESHEETPATH . "/$file.php"); return ob_get_clean(); } add_shortcode('php', 'shortcode_by_file'); ?> |
以下の内容のファイルを、ファイル名を”php_in_wp.php”として、functions.phpと同じ場所に置く。
1 |
<?php echo "Hello WordPress!"; ?> |
そして、以下のようにHTMLから外部ファイルを呼び出す。
1 |
[php file="php_in_wp"] |
下の行は、実際に上記を実行した結果。
Hello WordPress!参考リンク
WordPress投稿ページにPHP利用→ショートコードを使おう!