使用_TITLE过滤器添加标题前缀

时间:2017-10-28 作者:Iurie

我改编了existing solution 为过期的帖子标题添加前缀。它可以工作,但也会将前缀添加到主菜单元素和上一个/下一个链接(尚未过期)。我通过添加一个补充项从菜单元素中删除了前缀in_the_loop()if 条件,但这不会从上一个/下一个链接中删除前缀。如何解决这个问题?

function wpd_title_prefix_filter( $title, $post_id ) {
    if( in_the_loop() && is_singular( \'facebook_events\' ) && \'expired\' == get_post_status() ){
        $title = \'<span class="expired-event">[expirat]</span> \' . $title;
    }
    return $title;
}
add_filter( \'the_title\', \'wpd_title_prefix_filter\', 10, 2 );

UPDATE

我用CSS解决了这个问题,但为什么会这样?

.nav-title .expired-event {
    display: none;
}

1 个回复
最合适的回答,由SO网友:Milan Petrovic 整理而成

发生这种情况是因为the_title 当调用the\\u title()或相关函数来打印标题时,会运行筛选器,而prev/next links函数会运行相同的\\u title筛选器。

但是,这里的问题是,您有主post和上一个/下一个满足的一般条件:单数、过期post状态和循环。仅在单模板添加条件下以主帖子为目标$post_id == get_the_ID() 到您的IF - $post_id 是filter函数参数,并且get_the_ID() get是全局$post的ID。

结束

相关推荐

当返回值为空时,Apply_Filters为什么要返回非空字符串?

因为这个把我的键盘弄坏了。进行了正确的安装,将数据库上载到新的MySQL,并一直在正确使用子主题。但有件事困扰着我,我想不出来。在我的新安装上(ver2.whowhatwhy.com) 我故意将一些小部件留空。我想,当阅读default-widgets.php wp中的文件包括在该小部件上不会显示标题元素。相反,显示标题小部件是因为,出于某种原因,传递的值apply_filters 是一个空格,而不是空白值$instance[\'title\'] 为空。$title = apply_filters( \'