将搜索限制为仅搜索产品页面,除非我在博客页面或博客文章上

时间:2021-04-24 作者:Nicolas Körner

我使用以下代码将搜索限制为仅搜索产品(在产品档案中搜索)。

// Only show products in the front-end search results
add_filter(\'pre_get_posts\',\'lw_search_filter_pages\');
function lw_search_filter_pages($query) {
// Frontend search only
if ( ! is_admin() && $query->is_search() ) {
    $query->set(\'post_type\', \'product\');
    $query->set( \'wc_query\', \'product_query\' );
}
return $query;
}
我想实现的是,既然我们的页面上有一个博客,那么当从/博客页面或博客帖子触发searchquery时,就会使用正常的博客搜索。

我尝试添加if语句:

//Only show products in the front-end search results
function lw_search_filter_pages($query) {
    if ( ! is_admin() && $query->is_search() ) {
        if($wp_query->query[\'pagename\']==\'blog\'){
        }
        else {
        $query->set(\'post_type\', \'product\');
        $query->set( \'wc_query\', \'product_query\' );
        }
    }
    return $query;
}
没有成功。如何为blogpage添加IF语句(&P);仅博客帖子?如果不是pagename博客,我尝试在查询中添加if语句(尽管在这里我们会错过帖子)。

1 个回复
SO网友:wpnovice

我不完全理解,但:

function lw_search_filter_pages ( $query ) {

    // ...

}

if ( is_front_page () || is_home () ) {} else {

    add_filter ( \'pre_get_posts\', \'lw_search_filter_pages\' );

}
另一个:

function lw_search_filter_pages ( $query ) {

    // ...

}
                                   // https://yoursite.tld/blog
$uri = $_SERVER [ \'REQUEST_URI\' ]; //             $uri = \'/blog\';

if ( $uri == \'/blog\' ) {} else {

    add_filter ( \'pre_get_posts\', \'lw_search_filter_pages\' );

}