高亮搜索-带有功能的词条是否会删除或禁用其他过滤器?

时间:2012-12-07 作者:mathiregister

为了突出显示搜索结果页面上的当前搜索词,我找到了以下两个函数。

function search_excerpt_highlight() {
    $excerpt = get_the_excerpt();
    $keys = implode(\'|\', explode(\' \', get_search_query()));
    $excerpt = preg_replace(\'/(\' . $keys .\')/iu\', \'<span class="search-highlight">\\0</span>\', $excerpt);
    echo \'<p>\' . $excerpt . \'</p>\';
}

function search_title_highlight() {
    $title = get_the_title();
    $keys = implode(\'|\', explode(\' \', get_search_query()));
    $title = preg_replace(\'/(\' . $keys .\')/iu\', \'<span class="search-highlight">\\0</span>\', $title);
    echo $title;
}
使用此选项时,添加到the_excerpt() 已禁用,例如我添加的自定义更多链接。

现在在我的搜索结果中有这样的纯HTMLwhatever there is class="more-link">

有没有办法解决这个问题?

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

通常,对于像这样的过滤器,内容会被传递到过滤器中,进行处理并传递出去。这或多或少就是过滤器的定义。当然,严格来说这不是真的。你不必接受输入,如果你愿意,你可以删除“输入”内容,尽管大多数时候这可能不是一个好主意。

function search_excerpt_highlight($excerpt) {
    $keys = implode(\'|\', explode(\' \', get_search_query()));
    $excerpt = preg_replace(\'/(\' . $keys .\')/iu\', \'<span class="search-highlight">\\0</span>\', $excerpt);
    echo \'<p>\' . $excerpt . \'</p>\';
}
按照这些函数的编写方式,它们将清除队列中先前执行的任何过滤器处理。也就是说,过滤器被添加到一种执行堆栈中,然后逐个应用。这些过滤器之前的任何内容都将丢失,因为它们不接受信息,而只是用$excerpt = get_the_excerpt();$title = get_the_title();

结束

相关推荐

Search URL parameters query

Possible Duplicate:Custom search form with empty parameters 希望这是一个快速的过程,但我遇到了麻烦。我有多个搜索词,关键字,类别,国家和日期。我将其设置为用户不必搜索所有这些过滤器。我可以省略类别和/或日期,它将显示更松散的结果。但如果我离开国家,它不会显示任何结果,对任何其他参数执行相同的操作仍会显示结果。问题只在于国家。/?s=a&cat=41&country=&monthnum=&year= 不产生结果,但