通过编程更改WooCommerce类别

时间:2014-12-14 作者:Joachim Richter

在过去的两天里,我一直在试图找到解决这个小问题的办法。我想通过编程更改某些产品的类别,到目前为止,我有这个

这似乎很符合逻辑,例如前几行

如果它是一个产品,并且它在DivingSuite类别中,则将类别更改为ID为108的类别,

但这根本不起作用,我太迷茫了,有什么想法我可能忽略了?

add_action( \'publish_product\', \'update_terms\' );
function update_terms($post_id) {
$post = get_post( $post_id );

if ( is_product() && has_term( \'divingsuits\', \'product_cat\' ) ) {
    // TEST 1
$categories = array(108);
wp_set_object_terms( $post_id, $categories , \'product_cat\', false );

} elseif ( is_product() && has_term( \'elektro\', \'product_cat\' ) ) {
// TEST 2
$categories = array(78);
wp_set_object_terms( $post_id, $categories , \'product_cat\', false );

} else  {
// TEST 3
$categories = array(115);
wp_set_object_terms( $post_id, $categories , \'product_cat\', false );           
 }}

1 个回复
SO网友:Steve82

此处的问题可能是“publish\\u product”操作未启动-它仅在您首次创建产品时运行,或在草稿或待审核中将产品状态设置为“publish”时运行。

请注意,wp\\u set\\u object\\u terms将覆盖任何其他现有类别数据,最后一个参数设置为false,在您的代码中,这些产品将只得到一个新类别。

既然你只是在把一个类别换成另一个类别,那么你为什么不给现有的类别起新的名字和名称呢?

您也可以通过批量编辑功能完成此操作-在屏幕选项下,您可以将视图设置为一次显示500个产品,并且仍然可以执行正常操作(取决于您的设置,可能会很慢,但您仍然可以在20分钟内完成10000多个产品)。

最后,仅供将来参考,所有$类别变量都只是单值(整数),因此不需要array()。

结束

相关推荐

使用GET_CATEGORIES时突出显示当前类别

我成功地使用了helgatheviking在这篇文章中的回答:Show children of top level category only 请参见下面的代码:// get the category object for the current category $thisCat = get_category( get_query_var( \'cat\' ) ); // if not top-level, track it up the chain to find its