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

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

こんにちは。@tomicciです。

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

特に記事ページでPHPをinclude(読み込み)することができるようになったら素晴らしい!と考えカスタムしてみた。

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

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

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

これなら、全ページのヘッダーを変更したいと思った時に、ヘッダー用の1ファイルをいじっただけで、全ページのヘッダーの変更ができるわけだ。
※ファイル名は使用するテンプレートによって異なる場合があるよ!

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

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

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

<div class="widget widget_text">
  ・
  ・
  ・
  <?php include_once("inc/sidebar-author.php"); ?>
  ・
  ・
  ・
</div>

こんな感じになるね。

単なるinclude関数や、require関数というものもあるけど、既に読み込まれているphpファイルを、もう1回重複して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>
<img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-wp-preserve="%3Cscript%3E(function(w%2Cd%2Cs%2Cl%2Ci)%7Bw%5Bl%5D%3Dw%5Bl%5D%7C%7C%5B%5D%3Bw%5Bl%5D.push(%7B'gtm.start'%3A%0Anew%20Date().getTime()%2Cevent%3A'gtm.js'%7D)%3Bvar%20f%3Dd.getElementsByTagName(s)%5B0%5D%2C%0Aj%3Dd.createElement(s)%2Cdl%3Dl!%3D'dataLayer'%3F'%26l%3D'%2Bl%3A''%3Bj.async%3Dtrue%3Bj.src%3D%0A'%2F%2Fwww.googletagmanager.com%2Fgtm.js%3Fid%3D'%2Bi%2Bdl%3Bf.parentNode.insertBefore(j%2Cf)%3B%0A%7D)(window%2Cdocument%2C'script'%2C'dataLayer'%2C'XXX-XXXXXX')%3B%3C%2Fscript%3E" data-mce-resize="false" data-mce-placeholder="1" class="mce-object" width="20" height="20" alt="&lt;script&gt;" title="&lt;script&gt;" />
<!-- End Google Tag Manager -->

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

<body <?php body_class(); ?>>
<?php include_once("inc/google_tag_manager.php"); ?>

<div id="container" class="<?php echo esc_html(get_option('post_options_ttl'));?> <?php echo esc_html(get_option('side_options_sidebarlayout'));?> <?php echo esc_html(get_option('post_options_date'));?>">
<?php if(!is_singular( 'post_lp' ) ): ?>

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

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

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

となるよね!

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

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

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

sidebar.phpの例

<div class="sidebar">
  <div class="sidebar__block">
    ・
    ・
    ・
    <?php include_once("inc/asp_rotation_ad_car.php"); ?>
  </div>
  ・
  ・
  ・
</div>

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で一元管理すればいいのにと思うw

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

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

下記記事の「5. ショートコードを作っておく」を是非設定しておこう!

まとめ

今回の記事どうだっただろうか!?

もし難しくて分からないから、もっと易しく教えてほしいといった要望があれば、僕のTwitterまで連絡ください。

@tomicci

WordPressやPHPを一からプロに習いたい人は下記もチェックしてくださいね。

プロから直接学べるプログラミングスクールの紹介!PHPコースあり!

WordPressの勉強につまづいたら、マンツーマンでプロから習うのがオススメ

担当の指導者(メンター)が付いてくれるTechAcademyなら、分からないことをどんどん質問して解決できます!

ワードプレスで自分のサイトを開発!

Web制作会社が立ち上げたWebデザイナー育成スクール Web塾超現場主義

Web制作に実際に携わっている講師陣が、現場で通用するスキルを伝授します!卒業後は転職支援、仕事紹介などを行っており、フリーランス独立する道を探すこともできそうです。

初心者の方はもちろん更なるスキルアップを目指す方も、現場のクリエイターと実務経験を積むことで、WEB業界への就職や自宅でSOHOとして活躍する近道となります。
Facebookアカウントでコメント

※本コメント機能はFacebookによって提供されており、この機能によって生じた損害に対してザ サイベースは一切の責任を負いません。

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

ABOUTこの記事を書いた人

とみっち

埼玉でザ サイベースを主催しています。Webクリエイター。フリーランス歴7年。飄々と生きています。これでも育児頑張ってます。長野市出身。 @tomicci 詳しいプロフィール【興味】ギター/DTM/Web/車/田舎/旅/酒/育児 自然の音からデスメタルまで聴きます。【運営サイト】 ザ サイベース おと風景