web-dev-qa-db-ja.com

ページコンテンツをテンプレートの変数に読み込む

私のカスタムテンプレートの1つでは、コンテンツを表示する前にコンテンツを操作する必要があります。単にページに出力するのではなく、このコンテンツを変数にロードする方法はありますか。

これは私が試したものですが、ページの内容を出力するだけで、変数にはロードしません。

$content = get_template_part( 'content', 'page');
2
Spencer May

出力内容のバッファリングを使用して、印刷内容を変数に格納することができます。

function return_get_template_part($slug, $name=null) {

   ob_start();
   get_template_part($slug, $name);    
   $content = ob_get_contents();
   ob_end_clean();

   return $content;
}
$content = return_get_template_part('content', 'page');

今のところ get_template_part() を使い続けるにはこれが最も望ましいでしょう。代わりの方法は locate_template() 関数を使うことですが、デフォルトのテンプレートを使うことを危うくします。

get_template_part() および locate_template() の実装を確認してください。

4
M-R

テンプレートファイルをロードし、それに含まれるコードを実行し、そして結果を変数に保存したい場合は、phpの出力バッファリングを使用する必要があります。

ob_start();
get_template_part( 'content', 'page' );
$content = ob_get_contents();
ob_end_clean();
1
Milo