WooCommerce将运输类别添加到1000个产品

时间:2014-04-15 16:15:58

标签: wordpress woocommerce

我刚刚更新了我的WooCommerce运输课程,以便更好地使用某些商品免运费。

但是,我需要申请新的标准运费'等级到1000多种产品。浏览产品>批量修改无法一次性选择它们,也不能一次性地选择100个,我不想通过10比10来解决,直到我知道没有别的办法这样做。

问题:是否有可以提高速度的SQL查询?

我似乎无法在数据库中找到每个产品的发货类别:(

2 个答案:

答案 0 :(得分:1)

  1. 在页面顶部的屏幕选项中,选择每个显示1000个产品 页面并删除除标题以外的所有其他字段。

  2. 选择所有产品

  3. 批量修改

答案 1 :(得分:1)

我做了这个插件,它遍历了某个类别的所有产品并分配了所需的运输类别,更多详细信息在注释中:

<?php
/*
Plugin Name: Bulk Shipping class update
Description: Bulk Update of shipping class for woocommerce products
Version: 0.0.1
Contributors: svelandiag
Author: svelandiag
Text Domain: woocommerce-ship-class-by-cat
*/


// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
    die;
}

// define the woocommerce_init callback 
function action_woocommerce_init( $array ) { 
    /** The category ID's with the posts you want to change */
    $category_ids = array(635, 1022, 289, 291); // array of ints or single int
    
    /** The shipping class to set for the products */
    $shipping_class_slug = "shipping-class-slug"; // found in "shipping classes" in woocommerce settings
    
    /** Run query to collect our data */
    $products = new WP_Query(array(
        'post_type' => 'product',
        'posts_per_page' => -1,
        'fields' => 'ids',
        'tax_query' => array(
            array(
                'taxonomy' => 'product_cat',
                'field' => 'term_id',
                'terms' => $category_ids,
                'operator' => 'IN'
            )
        )
    ));
    
    /** Set our shipping class on each product */
    foreach ($products->posts as $pid) {
        wp_set_object_terms($pid, $shipping_class_slug, 'product_shipping_class');
    }
    
    /** reset the query */
    wp_reset_query();
}; 
         
// add the action 
add_action( 'admin_init', 'action_woocommerce_init', 10, 1 );

?>

您还可以提取该钩子和回调,并将其添加到您的子主题的functions.php中,请注意,这是一次性使用的代码段,因为它在每次管理后端初始化时都会运行。

该插件已经过最新的Woocomerce 4.x和最新的WordPress 5.x的测试。