php - 在 WooCommerce 的主页上隐藏 "out of stock"产品

标签 php wordpress woocommerce product hook-woocommerce

我不想在主页上显示“缺货”产品。 我尝试了一些 WooCommerce Hook 和过滤器来更改产品查询,但它不起作用。 我还在 woocommerce 设置区域选中了“隐藏缺货”。

但产品仍在出现。我能知道发生了什么事吗?

我试过这个过滤器 Hook 来改变主要产品查询:

add_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

function custom_pre_get_posts_query( $q ) {

if ( ! $q->is_main_query() ) return;
if ( ! $q->is_post_type_archive() ) return;
if ( ! is_admin() ) {


$q->set( 'meta_query', array(array(
    'key'       => '_stock_status',
    'value'     => 'outofstock',
    'compare'   => 'NOT IN'
)));

}

remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

我想隐藏缺货产品,但没有任何效果。感谢您的帮助。

最佳答案

要从您的主页中排除“缺货”产品,可以通过不同的方式完成。

1) 使用专用 woocommerce_product_query_meta_query 过滤器钩子(Hook)的元查询:

add_filter( 'woocommerce_product_query_meta_query', 'filter_product_query_meta_query', 10, 2 );
function filter_product_query_meta_query( $meta_query, $query ) {
    // On woocommerce home page only
    if( is_front_page() ){
        // Exclude products "out of stock"
        $meta_query[] = array(
            'key'     => '_stock_status',
            'value'   => 'outofstock',
            'compare' => '!=',
        );
    }
    return $meta_query;
}

2) 使用专用 woocommerce_product_query_tax_query 过滤器 Hook 的税务查询:

add_filter( 'woocommerce_product_query_tax_query', 'filter_product_query_tax_query', 10, 2 );
function filter_product_query_tax_query( $tax_query, $query ) {
    // On woocommerce home page only
    if( is_front_page() ){
        // Exclude products "out of stock"
        $tax_query[] = array(
            'taxonomy' => 'product_visibility',
            'field'    => 'name',
            'terms'    => array('outofstock'),
            'operator' => 'NOT IN'
        );
    }
    return $tax_query;
}

代码进入事件子主题(或事件主题)的 functions.php 文件。两者都有效。


相关:Hide out of stock products only on shop archive pages in Woocommerce

关于php - 在 WooCommerce 的主页上隐藏 "out of stock"产品,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56065860/

相关文章:

php - 您将如何测试表达式引擎中的模块是否有错误?

css - WordPress 中的 Sass

mysql - 使用多个 where 子句更新 wordpress 数据库表

php - WooCommerce 中的 blockOverlay 类样式覆盖

php - 数组空白回显问题

php - 使用PHP防止图片内XSS攻击

php - 如何根据 MySQL 查询结果显示图像,使用 PHP

php - 使用 PHP $_SERVER[HTTP_REFERER] 显示自定义欢迎消息/内容

ajax - 在 woocommerce 中使用 ajax 删除购物车中的产品

wordpress - 如何在 woocommerce 中为不同类别存档页面调用不同模板