【问题标题】:Set product shipping class based on metadata in WooCommerce根据 WooCommerce 中的元数据设置产品运输类别
【发布时间】:2021-10-27 14:14:58
【问题描述】:

我正在尝试编写一个特定函数,当 WooCommerce 自定义字段设置为特定值时,该函数允许自动更改产品运输类别。

请在下面找到有关自定义字段的屏幕截图


这是我想到的代码,但显然它不起作用。

function woo_on_product_save( $post_id ) {
    $title = $product->get_meta( 'meta_easyfatt_libero_1' );
    if ( $title = 'Trenta' ) {
        $shipping_class_id = 1182;
    }

    $product = wc_get_product( $post_id );
    $product->set_shipping_class_id( $shipping_class_id );
    $product->save();
}
add_action( 'woocommerce_process_product_meta', 'woo_on_product_save', 100 );

任何建议将不胜感激!

【问题讨论】:

    标签: php wordpress woocommerce metadata product


    【解决方案1】:

    你有一些小错误

    • 您使用$product->get_meta(..$product 未定义
    • if 语句中的比较运算符是==,而不是=
    • 使用woocommerce_admin_process_product_object 保存而不是过时的woocommerce_process_product_meta 挂钩

    所以你得到:

    // Save
    function action_woocommerce_admin_process_product_object( $product ) {
        // Get meta
        $title = $product->get_meta( 'meta_easyfatt_libero_1' );
        
        if ( $title == 'Trenta' ) {
            // The targeted shipping class ID to be set for the product
            $shipping_class_id = 1182;
    
            // Set the shipping class ID 
            $product->set_shipping_class_id( $shipping_class_id );
        }
    }
    add_action( 'woocommerce_admin_process_product_object', 'action_woocommerce_admin_process_product_object', 10, 1 ); 
    

    【讨论】:

    • 嗨@7uc1f3r。这段代码对我来说非常有效,但现在我有另一个需要。由于更新运输类别取决于保存产品,有没有办法自动保存/更新 woocommerce 上的所有产品,也许在一天的某个时间一次?也许为了避免过载,您可以每小时保存/更新一定数量的产品?如果您也能提供帮助,我将不胜感激
    • @Deegita 您可以应用类似于this answer最后一部分)中使用的东西,它用于订单,但对于产品也是如此。基本上,每次网站访问者查看页面时,都会自动更新 x 数量的产品。但是,cronjob 似乎更合适。但如果您有新问题,请点击 按钮提出问题。如果有助于提供上下文,请包含指向此问题的链接。
    猜你喜欢
    • 1970-01-01
    • 2020-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多