wordpress 在Woocommerce中隐藏“缺货”产品

46scxncf  于 5个月前  发布在  WordPress
关注(0)|答案(7)|浏览(99)

在“产品”和“库存”下,我检查了以下设置:“从目录中隐藏缺货项目”
现在所有售罄的产品都隐藏在存档/类别视图中。到目前为止一切顺利。
问题是隐藏的(缺货)产品是按页面计算的。所以如果第一页上有3种产品售罄,只有库存的产品显示(6)。
这些“隐藏”的产品似乎仍然可以搜索到,并且可以通过不同的小部件看到。
有什么办法解决这个问题吗?我的意思是真正隐藏缺货的产品。或者我需要手动删除它们?

qni6mghb

qni6mghb1#

您可以尝试将其添加到主题的functions.php文件中:

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' );

}

字符串
我修改了这个URL的代码:http://www.wptaskforce.com/how-to-exclude-one-or-more-category-in-woocommerce-shop-page/
再次保存在这里,以防该网站离线:(此代码不包括某些产品类别)

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( 'tax_query', array(array(
'taxonomy' => 'product_cat',
'field' => 'slug',
'terms' => array( 'PUT YOUR CATEGORY HERE' ), // Don't display products in the membership category on the shop page . For multiple category , separate it with comma.
'operator' => 'NOT IN'
)));

}


remove_action( 'pre_get_posts', 'custom_pre_get_posts_query' );

}

dz6r00yl

dz6r00yl2#

自我提示:始终阅读来自开发人员的更新日志。
在这里找到答案:http://develop.woothemes.com/woocommerce/2014/02/solving-common-issues-after-updating-to-woocommerce-2-1/#category-counts-incorrect
如果类别的产品计数显示过高或过低的数字,在更新到WooCommerce 2.1后,有一个简单的解决方案。
转到WordPress管理面板的WooCommerce >系统状态中的“工具”选项卡。在这里,您首先使用“重新计数术语”按钮,然后使用“清除 transient ”按钮。这将强制系统在下次加载类别时重新计数所有产品。
更新:另外请记住,将库存数量更改为0是不够的。您还必须将“库存状态”设置为“缺货”。如果没有,即使没有库存,产品也会被计入商店。

t2a7ltrp

t2a7ltrp3#

我发现了更简单的方法,如果有人仍然在寻找隐藏在woocommerce缺货的产品,按照这些简单的步骤,而无需编辑html!
1.转到WooCommerce ->设置
1.去库存
1.有一个复选框,说一些关于我们的问题,但它在英语:-)你会找到你需要的
1.保存

y1aodyip

y1aodyip4#

这将只工作,如果你是使用官方的woocommerce简码,但如果你创建一个页面与视觉 composer 和使用自定义插件或第三方插件或简码,第一步是为查询,从循环运行,然后你修改它像这样的东西

$params = array(
        'posts_per_page' => 5,
        'post_type' => array('product', 'product_variation'),
        'meta_query' => array(
            array(
                'key' => '_stock_status',
                'value' => 'instock'
            )
        )
);

字符串
最重要的是你要确定

'meta_query' => array(
        array(
            'key' => '_stock_status',
            'value' => 'instock'
        )
    )

qyuhtwio

qyuhtwio5#

隐藏缺货产品的步骤
1.转到WordPress Jmeter 板中的WooCommerce ->设置栏
1.点击产品标签>库存子标签
1.勾选选项缺货可见性,隐藏缺货产品
x1c 0d1x的数据

9fkzdhlc

9fkzdhlc6#

我知道这个问题很久以前就被问到了,但是问题的解决方案现在已经不同了,所以我把这个贴给那些和我有同样问题的人。

解决方案:首先确保Woocomet>设置中的“隐藏缺货产品”复选框未选中,然后将此PHP代码添加到您的子主题functions.php文件中:

add_action('woocommerce_product_query', 'show_only_instock_products');

function show_only_instock_products($query) {
        $meta_query = $query->get( 'meta_query' );
        $meta_query[] = array(
                'key'       => '_stock_status',
                'compare'   => '=',
                'value'     => 'instock'
        );
        $query->set( 'meta_query', $meta_query );
}

字符串
它在我的商店里运行得很好,这是与批发商集成的,那里的库存水平每小时更新一次,有数千种产品。

chhqkbe1

chhqkbe17#

您可以将PHP代码段放在子主题functions.php文件的底部。

add_action('woocommerce_product_query', 'custom_woocommerce_product_query');

function custom_woocommerce_product_query($q)
    {
        if (!is_admin())
        {
            $oos_query = new WP_Query(['meta_query' => [['key' => '_stock_status', 'value' => 'outofstock', 'compare' => '=', ], ], 'post_type' => 'product', 'posts_per_page' => - 1, 'fields' => 'ids', ]);
            $exclude_ids = $oos_query->posts;
    
            $q->set('post__not_in', $exclude_ids);
        }
    }

字符串

相关问题