【記事・固定ページ対応】WordPressでPHPファイルをインクルード(読み込み)する方法を教えちゃうよ!

【記事・固定ページ対応】WordPressでPHPファイルをインクルード(読み込み)する方法を教えちゃうよ! Wordpress

こんにちは。とみっちです。

WordPressを使っていて、ページ共通で表示させたいPHPファイルってありますよね。

特に、

とみっち
とみっち

記事ページでPHPをinclude(読み込み)することができるようになったらいいな

と考えカスタムしてみました。

今回はPHPファイルの読み込み方法を紹介します!

PHPファイルをincludeするとはなんぞ

WordPressはPHPで動いているので、ヘッダー部分は「header.php」、フッターは「footer.php」、記事ページは「single.php」といった別のファイルを複数読み込んで画面を表示するようになっています。

これなら全ページのヘッダーを変更したいと思った時に、ヘッダー用の1ファイルをいじっただけで、全ページのヘッダーの変更ができるわけです。

ファイル名は使用するテンプレートによって異なる場合があります。

PHPファイルから、別のPHPファイルをinclude_once関数やrequire_once関数を使って読み込むことができます。

PHP: include_once - Manual

サイドバーに、自分で用意したPHPファイルを読み込ませたいなーと思ったら、sidebar.phpのファイル内で別のPHPファイルをinclude_once関数で読み込んであげればOKです。

例えば、「sidebar.php」というファイルから、同階層においてある「inc」ディレクトリ内の「sidebar-author.php」というファイルを読み込むとすると、

・ ・ ・ ・ ・ ・

 

こんな感じになります。

単なるinclude関数や、require関数というものもあるんですが、

既に読み込まれているphpファイルを重複してincludeしてしまうとPHPのエラーが発生することがある

こういった理由で、重複読み込みを回避できるinclude_once関数を使うのがおすすめです。

PHPファイルをincludeすると便利そうなこと

WordPressで別のPHPファイルを読み込めたら便利そうなことを書いてみます。

  1. HTMLソース内に書くタグを別ファイルにして分かりやすくできる
  2. アドセンスや、アフィリエイト広告をPHPファイルに書いて一元管理
  3. APIで他サービスのデータを取得して表示する場合などの処理
  4. 「俺、WordPressでPHPをincludeできるんだぜ」と得意になれる

別ファイルにして分かりやすく

僕がやっているのは以下のような感じです。

WordPressのテンプレート用のファイルが並ぶ中、読み込むものは「inc」ディレクトリの中に格納するといいなと思って、「inc」ディレクトリを作りました。

通常、テーマファイルは「/hone/user/xxxxx.com/wp-content/themes/(テンプレート名)」といった場所に格納されていますよね。

footer.php
functions.php
header.php
home.php



inc


そして、自分で作った「inc」ディレクトリの中には、

asp_rotation_ad_car.php
asp_rotation_ad_school.php
asp_rotation_ad_wifi.php
google_tag_manager.php
youtube.php


といった名称でPHPファイルをたくさん置いています。

GoogleタグマネージャーやGoogle Analyticsのタグだったら、外部ファイルにしてこんな風書いておくと分かりやすくなりますよ。

まずは、「inc/google_tag_manager.php」というファイルを用意して、

<!-- Google Tag Manager --><noscript><iframe src="//www.googletagmanager.com/ns.html?id=XXX-XXXXXX" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript><script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'//www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','XXX-XXXXXX');</script> <!-- End Google Tag Manager --> 

そんで、読み込ませたい「header.php」などの中に、

>
<!--?php include_once("inc/google_tag_manager.php"); ?-->

これでOKです。「include_once」を書いた行ですね。

自分の書いたプログラムって、しばらくするとどうしても忘れちゃって、あのタグどこに書いたっけなー…ってなりがちなんですよね。

「google_tag_manager.php」というファイルがあれば、そうだ、ここを書き換えればいいのか!

となります!

アドセンスや、アフィリエイト広告のファイルを一元管理

毎回同じ広告を表示するのではなくブログのサイドバーに表示する広告をローテーションで表示させたくなることもあると思います。

そんな時は、「sidebar.php」内でinclude_onceしてあげます。

sidebar.phpの例

 

asp_rotation_ad_car.phpの例

<?php
  /**
   * ASPの広告タグをランダムに表示
   */

  // 車の広告1
  $ad1 = <<< EOM
  (ここに広告のHTMLタグを記述)
EOM;

  // 車の広告2
  $ad2 = <<< EOM
  (ここに広告のHTMLタグを記述)
EOM;

  // 車の広告3
  $ad3 = < EOM
  (ここに広告のHTMLタグを記述)
EOM;

  // 1〜3の間でランダムの数値を取得
  // ローテーションしたい広告が5個ならrand(1, 5)
  $ad_num = rand(1, 3);
  echo ${'ad' . $ad_num};

EOM〜EOMの間には、クォーテーションマークなどのエスケープを気にせずにHTMLをそのまま書けます。

PHPが使えれば、もっと厳密なプログラミングでローテーション広告を表示したり、記事のカテゴリに応じて広告群を切り替えたりと自由自在です。

PHPを勉強することは超おすすめ!

WordPressの記事ページや固定ページで読み込む方法

WordPressの記事ページや固定ページを読み込むカスタマイズはこの記事を参考にしました。

設定が終われば記事ページで、例えば、

[php_inc file='asp_ad_001']

のようにして「asp_ad_001.php」を読み込めるようになります。

例えば、広告を全部張り替えなければいけない、修正しなければならないような場面で超絶に便利!

広告を全部消さなきゃいけなくて、記事の修正にすごい時間がかかった…

みたいなことが書かれたブログを読むたびに、PHPで一元管理すればいいのにと思うわけです。

ショートコードでPHPを読み込む

WordPressの記事中に、Google Adsense広告を表示したい場合は、上記で紹介した方法よりも、ショートコードを使ったやり方が一般的ということが分かりました。

最近はWordPressのPost Snippetsプラグインを愛用しています。

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