这个the_title()
过滤器应用于菜单项中帖子和页面的标题,因此在没有任何条件的情况下,您所做的任何更改也将应用于此处。
有必要对您的条件进行细分,以了解您的更改仍应用于菜单的原因:
is_single()
<我们是否正在查看单个帖子我们可能是,但导航菜单通常仍显示在单柱上is_category()
*我们正在查看类别存档吗?`同样,我们可能会这样做,但导航菜单通常仍显示在单个立柱上is_search()
<我们是否正在查看搜索结果同样,对于nav菜单项也是如此
因此,您需要一个条件,以便仅对中的帖子标题应用筛选器
the loop. 你要找的功能是
in_the_loop()
.
我甚至可以说,你不想要你使用的任何其他条件。您的目标是在循环中具有worth-reading
类别只要满足这些条件,我们就不需要检查其他条件:
function label_after_post_title( $title, $post_id ) {
if ( is_admin() ) {
return $title;
}
if ( in_the_loop() && has_category( \'worth-reading\', $post_id ) ) {
return $title . \' <span class="worth-reading">Worth Reading</span>\';
}
return $title;
}
add_filter( \'the_title\', \'label_after_post_title\', 10, 2 );