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

标签 php wordpress search woocommerce product

背景:

我想将搜索结果限制为仅显示 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 出现。示例屏幕截图:

enter image description here

有办法解决吗?

最佳答案

使用! is_admin() 将此过滤器限制在前端,以避免后端出现许多问题:

// 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;
}

关于php - 仅在前端将搜索结果限制为 WooCommerce 产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63539988/

相关文章:

php - 正则表达式 PHP IF 包含和限制

MySQL 查询的 PHP 分页未正确递增/递减

PHP MySQL - 查找行 ID

html - 创建静态菜单 CSS

arrays - 在字符串数组中查找特定字符/字母的算法?

java - 如何对 mongodb 数组字段进行全文搜索?

php - 如何在表格的所有列中进行搜索?

javascript - 如何使用 javascript 为谷歌分析创建点击事件

mysql - 如何在 IIS 中查找 mysql 的连接字符串详细信息?

ruby-on-rails - 如何使用 sunspot 仅搜索已批准的文章