WordPressのfunctions.phpでphpファイルを展開させずに読み込む:メモ

悩み
悩み

以前調べたことを失念してまた調べ直していたので、忘れないようにメモとして残します。

同じ事は行わないだろう思っていたのですが、色々検討した末にまたこの方法に戻ってきた感もあり…。

記事に書けば多少は記憶に定着してくれると助かるのですが。

実現したいこと

まずは実現したいことがらを。

  • WordPressのthe_contentの出力時に任意のphpファイルを読み込んで表示
  • functions.phpに記述を追加

関連記事やSNSボタンのプラグインなどはthe_contentの出力時にいろいろ追加していることが多いようで、プラグインと投稿本文の間になにか入れるためには、フックを用いて追加する必要があります(他の方法があるかもしれませんが分からず…)。

入れる「何か」が例えば特定カテゴリーの一覧などですとテンプレートタグやらいろいろ書くため、それらを別ファイルにして管理し、functions.phpではそのphpファイルを読み込ませる形にしたいと考えました。

単なる文言やhtml程度でしたら変数にそのまま入れれば良いのですが、読み込む類いのものは先に出力されてしまうため上手くいかずでした。

対策

以下の記事で実現可能でした。

具体的には以下の形になります。
ルートにインストールしたWordPressのテーマフォルダ内にあるparts.phpを読み込み、出力先は投稿ページと固定ページを想定しています。


//the_contentにフックしてadd_parts_func()を実行
add_filter('the_content','add_parts_func');

function add_parts_func($the_content) {
 if (is_singul() || is_page()) {
  $return  = $the_content;
  ob_start();
  require_once(dirname(__FILE__) . '/parts.php');
  $output_string = ob_get_contents();
  ob_end_clean();
  return $return.$output_string;
 } else {
  return $the_content;
 }
}

ob_start()ob_end_clean()はうろ覚えでなんとかだったのですが、ob_get_contents()が思い出せず難儀していました…。

結び

9割り以上参照したページに答えがあるのですが、検索で用いたワードではなかなか見つからなかったためメモに残します。

なお、紆余曲折がありますが調べたワードのいくつかは以下の通り。

  • functions.php phpファイル 読み込み
  • get_template_part 出力しない
  • locate_template 出力しない
  • includerequire_once wordpress

これらにしても実際にはもう少し違うのですが、だいたいこんな感じだったかと。

以前も書きましたが、自分が調べそうなワードを記事に入れておけば、後日自分の記事が見つかって記憶が蘇る可能性がありますから、メモとして残すこと自体は意味があると思っています。

仮にローカル内にメモっておいても、そもそも忘れているから検索する訳ですし。

しかしながら、そういう形で残した内容は正確性が保証されていませんので、視点を変えれば他の方には害になりかねないなという自覚もあり、少々悩む部分ではあります…。

0人がこの記事を評価

役に立ったよという方は上の「記事を評価する」ボタンをクリックしてもらえると嬉しいです。

連投防止のためにCookie使用。SNSへの投稿など他サービスとの連動は一切ありません。

コメント欄