前提・実現したいこと
WordPressで、寄稿記事専用のテンプレートを作成しようとしています。
既存のテンプレート(親テーマ内のsingle.php)を、子テーマに用意したsingle-contribution.phpで読み込んでから、その一部分だけ内容変更したいと思っています。
わざわざ子テーマに用意するのは、親テーマに手を加えても、親テーマのバージョンアップで消えてしまうためです。
とはいえ、親テーマでsingle.phpが更新されたら、全体としてはその内容を引き継ぎながら、という形にしたいです。
<変更内容イメージ>
0. include(TEMPLATEPATH . '/single.php')でsingle.phpを読み込む
0. その中身にある
<?php getsidebar(); ?>を書き換えて、
<?php getsidebar('contribution'); ?> にする。
(sidebar-contribution.phpで、寄稿記事用のサイドバーを用意してある)
調べたところ、str_replaceで文字の置き換えができるとのことで、以下のようなコードを試しましたが、うまくいきません。
どういった方法なら実現可能でしょうか?
試したこと1
テンプレートは読み込みますが、サイドバーは変わっていませんでした。
php
1<?php 2/** 3 * Template Name: 寄稿用テンプレート2 4 * Template Post Type: page, post 5 */ 6?> 7<?php 8include(TEMPLATEPATH . '/single.php'); 9$str = get_sidebar(); 10$str = str_replace("get_sidebar()", "get_sidebar('contribution')", $str); 11 echo $str; 12?>
試したこと2
ネットで見つけたコードを元に、以下を試しましたが、機能しませんでした。
single.phpは、子テーマフォルダの直上のフォルダにあります。
php
1<?php 2$content = file_get_contents("../single.php"); 3echo okikae($content); 4 5function okikae($str){ 6return str_replace("get_sidebar()","get_sidebar('contribution')",$str); 7} 8?>
補足情報(FW/ツールのバージョンなど)
WordPress5.5.3、PHP7.4です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/08 03:11