任意の場所に記事一覧を作りたいなど、少し凝ったことをしようとすると php でプログラミングが必要になります。
その最初の一歩として、任意のコードを書いた php ファイルを記事内で読み込んで実行する方法を紹介します。
すごく基本的なことですが、子テーマを使っていると色んなサイトで紹介されているコードが使えなかったので、自分へのメモがてら残しておきます。
1) php ファイルを読み込む記事を作成
固定記事でも投稿記事でもなんでもいいので、テスト用の記事を一つ作成し、以下の一行だけ記載します。
[myphp file='test1']
この状態で記事のプレビューを見るとこんな感じで追加したコードが表示されているだけですが、とりあえずは今はこれで OK。
2) 実行するコードを含んだ php ファイルを作成
読み込ませる php ファイルを作成します。
WordPress に simplicity2 の子テーマをインストールすると、以下のようにテーマ別にフォルダが作成されます。
//フォルダ階層 remotosa.com <<--ドメイン名 └─public_html └─wp-content └─themes ├─simplicity2 <<--親テーマ └─simplicity2-child <<--実際に使っている子テーマ
そのまま子テーマの中に .php ファイルを作ってもいいんですが、今後のために myPhpFiles というフォルダに php ファイルを入れていくことにしました。
つまり、こんな感じで Simplicity2-child\myPhpFiles\test.1php というファイルを作成。
この php ファイルには以下のように、記事にテスト文を吐き出すコードだけをひとまず記入。
//test1.php <?php printf( "this is a msg is printed from test1.php"); ?>
あとはこのファイルを記事内から読み込めるようにするだけです。
3) functions.php を編集
php ファイルを読み込むためには functions.php にそのための関数を追加します。
WordPress のダッシュボードの [外観] – [テーマの編集] からでも OK なんですが、間違えたコードを追加すると WordPress が開けなくなることもあるので、Simplicity2-child 直下にある functions.php を ffftp で直接編集した方がいいかも。
[NG] 子テーマを使っていなければ使えるコード
php ファイルの読み込み方を紹介しているサイトを参考にしようとすると、以下のコードにたどり着きました。
// // 子テーマを使っていなかったらこれが使える // function Include_my_php($params = array()) { extract(shortcode_atts(array('file' => 'default'), $params)); ob_start(); include(get_theme_root() . '/' . get_template() . "myPhpFiles/$file.php"); return ob_get_clean(); } add_shortcode('myphp', 'Include_my_php');
でもこのコードだと下のようなエラーになります。
線を引いたところを見ると、Simplicity2-child ではなく親テンプレートの Simplicity2 を見に行っています。
[OK] 子テーマを使っている場合に使うコード
今回は子テーマのディレクトリ内に作成しているので、include() の部分のパスを以下のように変更します。
私のように Simplicity2 の子テーマを使っている人は、以下がそのまま使えるはず。
// // Simplicity2-child/myPhpFiles の php ファイルを開くためのコード // function Include_my_php($params = array()) { extract(shortcode_atts(array('file' => 'default'), $params)); ob_start(); include(get_theme_root() . "/simplicity2-child/myPhpFiles/$file.php"); return ob_get_clean(); } add_shortcode('myphp', 'Include_my_php');
注:大文字小文字関係あります。 myPhpFiles と myphpfiles は別って認識されます。
これで最初のページを更新すると、ちゃんと test1.php に書いたようなメッセージが表示されるようになっているはず。
これで php を読み込むための構成が出来上がりです。
test1.php を編集すればその内容が反映されます。test1.php 以外のファイルを読み込む場合にも、同じフォルダ内 (myPhpFiles) に .php ファイルを作成して、記事内の任意の場所で以下を記入することで php を実行できます。
[myphp file='test1']
まとめ
説明を加えたので長くなりましたが、サクッとやる事は:
1) Functions.php に以下を追加
// // Simplicity2-child/myPhpFiles の php ファイルを開くためのコード // function Include_my_php($params = array()) { extract(shortcode_atts(array('file' => 'default'), $params)); ob_start(); include(get_theme_root() . "/simplicity2-child/myPhpFiles/$file.php"); return ob_get_clean(); } add_shortcode('myphp', 'Include_my_php');
2) Simplicity2-child/myPhpFiles 配下に .php ファイルを追加し、そこにコードを記入
3) 以下で記事内からその php ファイルに記載したコードを実行できる。
[myphp file='test1']