私は この方法を使用しようとしています プレーンテキストを使用するのではなく、テンプレート部分(HTML Code)を含めるようにしています。テキストを使用すると、the_contentフィルタを使用してコンテンツの下に正しく表示されます。ただし、get_template_partを実行しようとすると、コンテンツはコンテンツの下ではなく、Wordpressの投稿の上部に表示されます。
Wordpressの単一コンテンツの前後にテンプレート部分を追加/取得するためのより良い方法はありますか?
これは私がフィルタで試しているコードです:
function educadme_book_fields_content_hook( $content ) {
if( is_singular('books') ) {
$beforecontent = '';
$aftercontent = get_template_part( 'parts/book', 'fields' );
$fullcontent = $beforecontent . $content . $aftercontent;
return $fullcontent;
}
また試してみました:
$content .= get_template_part( 'parts/book', 'fields' );
return $content;
それでも、get_template_partのすべてのコンテンツと同じ問題が、the_contentだけでなくタイトルの上にも表示されます。ありがとうございます。
Get_template_partとrequireは、コンテンツをコンテンツの上に表示し、下には表示しないため使用できませんでした(Thanks @benoti)ので、別の方法を使用することにしました。
ob_start(); ?>
<? global $post; ?>
Long HTML Content with some PHP variables inside to load all the custom fields & style I wanted instead of using an external file which I prepared before.
<?php
$book_fields = ob_get_clean();
$fullcontent = $content . $book_fields;
return $fullcontent;
関数からのreturn
とecho
の組み合わせはテキストの位置を変えることに注意してください。
あなたがこの簡単な例を取るならば:
function test(){
$the_test = 'test return';
echo 'test echo';
return $the_test;
}
echo test();
エコーされた行の場所にかかわらず、echoはreturn $the_test;
の前に呼び出されるため、この行は常にecho test();
の前に出力されます。
表示するには、 get_template_part および/または template_redirect アクションを実行する必要があります。あなたが望むようなコンテンツ。
私が何を意味するのか、そしてあなたの問題との関係を理解してください。