【问题标题】:Assign a tag programatically for stock status when product is saved in WooCommerce backend当产品保存在 WooCommerce 后端时,以编程方式为库存状态分配标签
【发布时间】:2021-06-22 20:33:14
【问题描述】:

我已经创建了 3 个标签 1.

  • 延期交货 (id 111)
  • 有现货 (id 112),
  • 缺货 (id 113)

我希望根据可用性自动分配这些标签。

如果我能够完成这项工作,我将使用woocommerce_admin_process_product_objectwoocommerce_product_quick_edit_savewoocommerce_product_set_stockwoocommerce_variation_set_stock 来捕捉库存状态变化的可能场景。

以下是我尝试过的,但它给了我一个致命的错误。如果我不使用 if 条件,则会分配标签,但它不符合我的目标。有什么建议吗?

add_action( 'woocommerce_admin_process_product_object', 'mycode_woocommerce_backorder_tag', 10, 2 );
function mycode_woocommerce_backorder_tag ($wc_get_product, $product) {
    if ($product->managing_stock() && $product->is_on_backorder(1)) {
        $wc_get_product->set_tag_ids(array(111));
        $wc_get_product->save();
        //wp_set_object_terms ($post_id, 'onbackorder', 'product_tag');
    }
}

【问题讨论】:

    标签: wordpress woocommerce tags product stock


    【解决方案1】:

    woocommerce_admin_process_product_object钩子只有1个参数,即$product

    $product->save(); 也不是必需的,因为这是自动发生的

    复制自 admin/meta-boxes/class-wc-meta-box-product-data.php

    /**
     * Set props before save.
     *
     * @since 3.0.0
     */
    do_action( 'woocommerce_admin_process_product_object', $product );
    
    $product->save();
    

    所以要回答你的问题,你会得到:

    // When product is saved in WooCommerce backend
    function action_woocommerce_admin_process_product_object( $product ) {
        // managing_stock() - returns whether or not the product is stock managed.
        // on_backorder() – check if a product is on backorder.
        if ( $product->managing_stock() && $product->is_on_backorder(1) ) {
            // Product set tag ids
            $product->set_tag_ids( array( 111 ) );
        }
    }
    add_action( 'woocommerce_admin_process_product_object', 'action_woocommerce_admin_process_product_object', 10, 1 ); 
    

    【讨论】:

    • 谢谢@7uc1f3r。我已经用修改后的代码更新了这个问题。没有错误,但标签无法正确应用有时可能是由于我的代码中的嵌套问题。
    • @Yo93sh 请不要编辑已经包含新问题答案的现有问题。 “如果您有新问题,请点击 按钮提出。如果有助于提供上下文,请包含指向此问题的链接。”
    猜你喜欢
    • 1970-01-01
    • 2019-01-27
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2017-01-04
    • 2021-12-03
    • 1970-01-01
    • 2021-01-16
    相关资源
    最近更新 更多