背景:
我想将搜索结果限制为仅显示 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
出现。示例屏幕截图:
有办法解决吗?
最佳答案
使用! 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/