仅在前端将搜索结果限制为 WooCommerce 产品

背景:


我想将搜索结果限制为仅显示 WooCommerce 产品。下面的代码正是我想要的。


//Only show products in the front-end search results

function lw_search_filter_pages($query) {

    if ($query->is_search) {

        $query->set('post_type', 'product');

        $query->set( 'wc_query', 'product_query' );

    }

    return $query;

}

 

add_filter('pre_get_posts','lw_search_filter_pages');

问题:


通过使用上面的代码,它会影响我网站上某些插件的工作方式。例如,在 Elementor Pro 中,当我搜索 时Checkout Page,它不会显示。相反,只Products出现。截图示例:

https://img1.sycdn.imooc.com/6535291b0001ab0911980843.jpg

有办法解决这个问题吗?



波斯汪
浏览 88回答 1
1回答

牛魔王的故事

使用! is_admin()将限制此过滤器仅在前端使用,以避免后端出现许多问题:// Only show products in the front-end search resultsadd_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;}
打开App,查看更多内容
随时随地看视频慕课网APP