我改编了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;
}
最合适的回答,由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。