首页 > 解决方案 > 隐藏某些用户在 Woocommerce 上发布的产品

问题描述

我正在尝试根据发布产品的用户 ID 在 Woocommerce 中隐藏产品。

我创建了以下代码,但效果不佳。

function Products_for_vendor() {
$args     = array( 'post_type' => 'product', 'post_author' => '2' );
$products = get_posts( $args );

    foreach ($products as $product->ID) {

        $post_id = $product->ID

        $terms = array( 'exclude-from-catalog', 'exclude-from-search' );
        wp_set_object_terms( $post_id, $terms, 'product_visibility', false );

    }

}

add_action( 'init', 'Products_for_vendor' );

为了隐藏帖子,我提取了此查询中提到的代码:Change product visibility via PHP on Woocommerce 3+

任何帮助或评论都会受到好评。

提前致谢。

标签: phpwordpresswoocommerce

解决方案


您不应该直接更改此类内容 - WooCommerce 具有特殊功能,可确保未来与任何数据库结构更改的兼容性,并确保产品数据在其内部缓存中正确同步。

相反,在你的 foreach 循环中,使用这个:

// Get an instance of the product
$theproduct = wc_get_product($product->ID);
// Change the product visibility (options are: 'hidden', 'visible', 'search' and 'catalog'.
$theproduct->set_catalog_visibility('hidden');
// Finally, save and sync the product changes
$theproduct->save();

推荐阅读