将所有产品更改为在Woocommerce中具有相同的运输类别

时间:2015-03-04 10:56:44

标签: wordpress woocommerce shipping

我有一个拥有1000多种产品的woocommerce商店,但是,我注意到随机产品没有适用于他们的运输类别。因此,当客户到达结账时,这些项目会导致运费计算出现问题。

有没有办法显示没有运输类别的产品清单,或者将商店中的所有产品更改为相同的运输类别而不单独检查每个产品?

我知道我可以使用批量操作来更改所有内容,但有25页以上,即使我更改了所显示的产品数量。

1 个答案:

答案 0 :(得分:0)

这应该会更改所有已发布帖子的发货类别。

更新回答

记得fields参数,所以这是新代码:

$shipping_class_slug = 'your-shipping-class-slug';

// get just the IDs of all products published
$products = new WP_Query( array (
    'post_type'      => 'product',
    'posts_per_page' => -1,
    'fields'         => 'ids'
));

// for each product change the shipping class
foreach ( $products->posts as $pID ) {
    wp_set_object_terms( $pID, $shipping_class_slug, 'product_shipping_class' );
}

旧答案

$shipping_class_slug = 'your-shipping-class-slug';

// get all products published
$products = new WP_Query( array (
    'post_type' => 'product',
    'posts_per_page' => -1
));

// retrieve products IDs
$productsIDs = wp_list_pluck( $products->posts, 'ID' );

// for each product change the shipping class
foreach ( $productsIDs as $pID ) {
    wp_set_object_terms( $pID, $shipping_class_slug, 'product_shipping_class' );
}

您可以将其包装在函数中(在functions.php文件中)以使用action进行调用。

请记住将'your-shipping-class-slug'更改为您想要的那个。

最重要的是:做一个备份,然后再尝试任何事情! ;)

(更好:在本地克隆网站并首先尝试)