我不会为这个功能使用自定义字段或短代码,我会查看过滤器。the_content
过滤器和loop_end
动作(只需确保主题使用while ( have_posts() )
在单篇文章中,我立刻想到了这一点。这两个选项不需要修改主题中的任何文件。这样,您就可以在单个贴子页面中添加额外的内容(,我想这就是您所需要的内容),而无需创建子主题。
以这种方式处理问题时,您也不需要记住使用快捷码或为特定帖子设置custoim字段,因此您有了一种更动态的方式,只需设置一次就可以了
为了方便起见,也是推荐的方法,是创建own custom plugin 您可以在其中转储代码。这样,即使切换主题,自定义文本仍将显示,而无需修改新主题或创建另一个子主题。
让我们看看添加自定义文本行的两种方法:(NOTE: 所有代码都未经测试,应放入自定义插件中
the_content
筛选这将在单个贴子页面上的内容后添加自定义文本
add_filter( \'the_content\', function ( $content )
{
/**
* Only filter the content on the main query, and when the post belongs
* to the washington category and are tagged county. Adjust as needed
*/
if ( !is_single() )
return $content;
if ( !in_the_loop() )
return $content;
$post = get_queried_object();
if ( !in_category( \'washington\', $post )
&& !has_tag( \'county\', $post )
)
return $content;
// We are inside the main loop, and the post have our category and tag
// Get the post title
$MyCounty = apply_filters( \'the_title\', $post->post_title );
// Set our custom text
$text = "If you live in $MyCounty, tell us what you think.";
return $content . $text;
}):
loop_end
操作
这将在帖子后添加文本,您也可以使用
loop_start
在循环之前添加文本,甚至
the_post
这也会在帖子之前添加文本。请注意,所有操作都需要响应其输出
add_action( \'loop_end\', function ( \\WP_Query $q )
{
// Only target the main query on single pages
if ( $q->is_main_query()
&& $q->is_single()
) {
$post = get_queried_object();
if ( in_category( \'washington\', $post )
&& has_tag( \'county\', $post )
) {
$MyCounty = apply_filters( \'the_title\', $post->post_title );
$text = "If you live in $MyCounty, tell us what you think.";
// Echo our custom text
echo $text;
}
}
});