我是一个绑定者。我正在为WP中的帖子添加评分。这是通过the_content
过滤器完成的。事实上,有些主题使用摘录而不是内容,比如存档循环。添加评级就像添加the_excerpt
的过滤器一样简单。问题是,当主题检索到摘录时,它也会触发the_content
过滤器(因此实际上会添加评级),但之后,内容将被删除所有html标签,因此评级(形状)已消失但是投票柜台仍在。这导致了非常漂亮的情况:
现在我想知道它的好方法是什么?我认为没有办法查看将为当前帖子调用操作处理程序的操作列表(因此,如果从the_content
过滤器调用操作处理程序(由current_filter()
检查)并且存在此帖子的“队列”中的the_excerpt
只返回没有更改的内容)或者知道是否the_content
被函数触发以检索摘录的方法。当然,非常肮脏和可怕的解决方法是在the_excerpt
触发操作处理程序时检查投票计数器文本的内容,并将其替换为空字符串,但这不是一个好的解决方案。我在这里错过了什么吗?有没有更简洁的方法呢?
答案 0 :(得分:1)
好的,我能想到的最干净的解决方案是
function remove_mah_filter($content)
{
if (has_filter( 'the_content', 'your_filter' ))
{
remove_filter( 'the_content', 'your_filter' ); // if this filter got priority different from 10 (default), you need to specify it
}
return $content;
}
add_filter('get_the_excerpt', 'remove_mah_filter', 9); //priority needs to be lower than that of wp_trim_excerpt, which has priority of 10. Otherwise, it will still be triggered for the first post in the loop.
// add it back so that it can be called by the actual content
function readd_mah_filter($content)
{
add_filter( 'the_content', 'your_filter' ); // if this filter got priority different from 10 (default), you need to specify it
return $content;
}
add_filter('get_the_excerpt', 'readd_mah_filter', 11); //priority needs to be higher than that of wp_trim_excerpt, which has priority of 10.