我在这里看到的主要问题是get_template_part()
在这种情况下发挥作用。这并不是最好的方式,因为我们将过滤你帖子的内容,你可能需要获取横幅的标记,而不是立即输出。阅读更多信息here.
我建议将baner标记保留在单独函数的变量或返回值中,如下所示:
function get_banner_html() {
return \'<div class="baner">Your baner HTML here</div>\';
}
然后,您可以使用WordPress挂钩轻松过滤所有帖子的内容:
function insert_banner_into_content( $content ) {
// make sure we\'re affecting only posts
if ( \'post\' !== get_post_type() ) {
return $content;
}
// split content by paragraph tag
$paragraphs = explode( \'<p>\', $content );
// continue only when post has 3 paragraphs or more
if ( count( $paragraphs ) < 3 ) {
return $content;
}
// add banner after 3rd paragraph
$paragraphs[2] .= get_banner_html();
// return modified content
return implode( \'<p>\', $paragraphs );
}
// hook it up!
add_filter( \'the_content\', \'insert_banner_into_content\' );