Php 从产品类别中排除最近查看的产品小部件中的Woocommerce产品

Php 从产品类别中排除最近查看的产品小部件中的Woocommerce产品,php,wordpress,woocommerce,product,taxonomy-terms,Php,Wordpress,Woocommerce,Product,Taxonomy Terms,我试图找出如何从Woocommerce中最近查看的产品小部件中排除类别中的产品 我知道可以使用以下代码从商店页面中删除/隐藏类别中的产品 function custom_pre_get_posts_query( $q ) { $tax_query = (array) $q->get( 'tax_query' ); $tax_query[] = array( 'taxonomy' => 'product_cat', 'fiel

我试图找出如何从Woocommerce中最近查看的产品小部件中排除类别中的产品

我知道可以使用以下代码从商店页面中删除/隐藏类别中的产品

function custom_pre_get_posts_query( $q ) {
    $tax_query = (array) $q->get( 'tax_query' );
    $tax_query[] = array(
           'taxonomy' => 'product_cat',
           'field' => 'slug',
           'terms' => array( 'machine' ), // Don't display products in the machine category on the shop page.
           'operator' => 'NOT IN'
    );
    $q->set( 'tax_query', $tax_query );
}
add_action( 'woocommerce_product_query', 'custom_pre_get_posts_query' );
我想知道如何从最近查看的产品小部件中排除“机器类别”中的产品。(我正在使用一个搜索,它自动推荐商店中可用的产品,并允许用户查看从存档页/类别页隐藏的产品),因此如果用户能够通过搜索访问产品,我想从最近查看的产品小部件中排除这些产品

我用这段代码将某个类别中的产品从搜索结果中排除,这与预期的效果一样,但问题是自动建议仍然可以显示排除/隐藏在查询中的产品

function hello_pre_get_posts( $query ) {
   if ( $query->is_search() ) {
       $query->set( 'post_type', array( 'product' ) );
       $tax_query = array( array(
               'taxonomy' => 'product_cat',
               'field'   => 'slug',
               'terms'   => 'machine',
               'operator' => 'NOT IN',
           ),
       );
       $query->set( 'tax_query', $tax_query );
    }
}
add_action( 'pre_get_posts', 'hello_pre_get_posts' );
对于如何从最近查看的产品小部件中排除已查看产品的帮助,我们将不胜感激。

您需要使用:


代码进入活动子主题(或活动主题)的function.php文件。测试和工作。

应用和工作!!!最有趣的是,我尝试了类似的方法,但我想优先级和参数起到了很大的作用,因为当我早些时候在第82行看到过滤器后使用了它。它完全删除了小部件,但现在分类机中的产品不再显示。。。感谢@LoicTheAzteci丢失
返回$args
在我尝试的代码中,它制作了整个小部件disappear@KolawoleEmmanuelIzzy过滤钩子总是需要从钩子函数返回第一个参数,因为它们过滤它…@LoicTheAztec对畅销书也可以这样做吗?或者该插件是特定的(WooCommerce产品转盘、滑块和网格终极Pro)?@Lyall可能正在使用WooCommerce产品、小部件、查询、参数钩子…
// Exclude products in recently viewed products widget from "machine" product category
add_filter( 'woocommerce_recently_viewed_products_widget_query_args', 'custom_recently_viewed_products_widget_query_args', 10, 1 );
function custom_recently_viewed_products_widget_query_args( $args ) {

    $args['tax_query'][] = array(
           'taxonomy' => 'product_cat',
           'field'    => 'slug',
           'terms'    => array( 'machine' ), 
           'operator' => 'NOT IN', 
    );

    return $args;
}