检查搜索查询是否包含某些内容?

时间:2016-11-24 作者:Advanced SEO

如何检查搜索查询是否包含一些字符?例如,我想检查搜索查询是否包含“/”。

我试过了this answer 但这对我不起作用。我只是想说我正在使用自定义搜索库。

示例:

地点com/myseachbase/keyword

其中“myseachbase”是我的自定义搜索基础。我需要的是检查搜索查询是否有“/”,在某些情况下,它位于搜索查询的末尾,例如:

地点com/myseachbase/keyword/

如何在搜索URL中检查结尾“/”?

<小时>

QUESTION UPDATE:

<问题是我有一些自定义URL,如:

地点com/myseachbase/keyword

它们实际上是搜索结果,甚至访问者也可以通过点击链接而不是使用普通的网站搜索来打开它们。

只有在以下情况下,我才需要使其可索引:

有搜索结果,这是第一个搜索结果页面,而不是任何其他的/页面/x

  • 搜索查询有特定的关键字
  • 搜索结果是正确的,有用的结果
  • 加上编辑根据搜索关键字准备的一些优质内容
  • 完成这部分后,我有了很好的优质内容,基于搜索查询的自定义文本+URL上的一些图像(图像是搜索结果),如:

    地点com/myseachbase/keyword

    但是,如果您在中添加“/”,您将得到相同的页面,但另一个URL,它也将满足可索引的条件。所以,我需要一种方法来放置“noindex”标记,以防它是那个重复的URL,URL末尾带有“/”,因为我没有创建规范URL的选项。为此,我需要一些东西来检查“/”。

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

    问题更新后,我认为您需要设置规范URL:

    add_action( \'wp_head\', \'cyb_search_results_canonical_URL\' );
    function cyb_search_results_canonical_URL() {
        if( is_search() ) {
            $link = get_search_link();
            echo \'<link rel="canonical" href="\' . esc_url( $link ) . \'">\';
        }
    }
    
    您的重复内容问题已得到修复。

    SO网友:Emil

    您需要通过pre_get_posts. 以下代码段将搜索/ 在查询中。

    add_action(\'pre_get_posts\',\'search_query\');
    function search_query($query){
        if (!is_admin() && $query->is_main_query() && is_search()){
            $search = $query->query_vars[\'s\'];
            if (strpos(\'/\', $search) !== false){
                // Found \'/\' in search query
            }       
        }
    }
    

    相关推荐

    edit URL of search result

    我有一个主题为Salent的wordpress网站,我在标题中有默认搜索,搜索结果是http://www.example.com/?s=colagenwhile“;“colagen”;是在搜索中键入它的键,但结果页看起来不太好,这就是为什么我希望搜索结果url是这样的http://www.exemple.com/?s=colagen&post_type=product因为使用此url,woocomerce产品看起来更好