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

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

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

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ファイルを重複して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="&amp;lt;script&amp;gt;" title="&amp;lt;script&amp;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で一元管理すればいいのにと思うわけです。

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

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

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

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

Webデザインスクールの「WebCamp」が手がけるママのためのWebデザインコース

1ヶ月の短期集中でWebデザイナーを目指せます。仕事復帰を希望する主婦やママさんにオススメです。

1ヶ月でHP作成!「WebCamp」

【参考記事】WebCampなら1ヶ月の短期集中でWebデザイナーを目指せる

自己流でプログラミングを覚えようとすると、環境設定でつまづく、書いたプログラムがなぜ動かないか解決できず、多大な時間を浪費してしまいがちです。

担当の指導者(メンター)が付いてくれるTechAcademyなら、分からないことをどんどん質問して解決できます!コードレビューしてもらえるのも素晴らしい点ですね。

プログラミング 無料体験

【参考記事】HTMLの勉強ならTechAcademy(テックアカデミー)のフロントエンドコースが短期集中でオススメ!

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

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

まだ「独立・開業はちょっと...」という方へは、当社の制作案件をお手伝いして頂く道も開けます。
【記事・固定ページ対応】WordPressでPHPファイルをインクルード(読み込み)する方法を教えちゃうよ!

ABOUTこの記事を書いた人

とみっち

5年ほど前までバンド活動してました。現在はブログを運営して暮らしています。サウンドクリエイター、webクリエイター。息子は4歳になりました。長野市出身。埼玉県本庄市在住。 【興味】音/Web/車(GolfV GTI等)/田舎/旅/酒 ※自然の音からデスメタルまで聴きます。 @tomicci 詳しいプロフィール 【主な運営サイト】 ザ・サイベース おと風景