我试图根据发布产品的用户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+
任何帮助或评论都受到好评。
谢谢。
答案 0 :(得分:0)
您不应该直接更改此类内容-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();