如何对搜索结果进行排序,以便在用户搜索特定单词时首先显示特定页面?

时间:2021-07-15 作者:Zuzana

我正在尝试创建一个函数,当用户在搜索栏中插入特定单词时,该函数将为我提供特定的结果顺序。

示例:用户在搜索栏中插入;香蕉“;目前,我的网站提供了所有结果(页面、帖子、白皮书等)其中包括;香蕉“;这很好,但是,在这些结果中有3个特定的页面,我想作为第一个页面向用户显示。

所以我想实现的是:当用户插入;香蕉“;或“或”;香蕉“;查询将有

ID为1025的特定页面显示为第一个,ID为21837的特定博客文章显示为第二个,ID为18495的特定网络研讨会显示为第三个,然后将按任何顺序列出其他结果。

非常感谢您的帮助!

function specific_page($query){
    if(!is_admin() && $query->is_main_query() && is_search() &&  $query===\'BANANA\')
    {
    
      $query->set(\'post__in\', array(1025,21837,18495));
    }
 }
    add_filter(\'pre_get_posts\',\'specific_page\');
上面给出了每个查询的3个搜索结果,而不仅仅是;香蕉;。。。

1 个回复
SO网友:CodingSamurai

您需要从URL读取搜索参数。默认情况下,WordPress使用参数s 存储搜索结果。因此,您需要执行以下操作:

$user_search = ( isset( $_REQUEST[\'s\'] ) ? \'*\' . wp_unslash( trim( $_REQUEST[\'s\'] ) ) . \'*\' : false );

if ( false != $user_search ) {
    $query->set(\'search\', $user_search);
    $query->set(\'search_columns\', array( <comma separated list of any fields other than content you want searched> ));
}

相关推荐

在WordPress上使用ElasticSearch

我是个傻瓜,所以感谢你的耐心:-)我正在尝试使用ElasticSearch和使用ElasticPress插件的Wordpress安装。所有配置和生产中。到目前为止取得了惊人的成绩。我对所有ES的使用位置感到困惑。“默认情况下,它仅在搜索页上工作。如果要使用它处理任何其他页,或索引、循环、主页、存档、税务(WP\\U查询),则必须添加到查询中:”“ep\\U integrate”“=>true”有人能帮我用代码片段实现这个吗?谢谢