更新自定义产品元框字段-WooCommerce

时间:2019-12-05 09:00:16

标签: wordpress woocommerce product meta

我正在尝试使用WooCommerce核心的更新系统来更新自定义产品元框字段。这是我的代码:

新字段运输信息

add_action( 'woocommerce_product_options_shipping', 'my_product_options_shipping' );
function my_product_options_shipping() {
    global $post;
    $shipping_info = get_post_meta( $post->ID, '_shipping_info', true );

    woocommerce_wp_text_input(
        array(
            'id'          => '_shipping_info',
            'value'       => $shipping_info,
            'label'       => __( 'Shipping info', 'woocommerce' ),
            'placeholder' => __( 'Shipping in two days', 'woocommerce' ),
        )
    );
}

这是在WC_Meta_Box_Product_Data :: save中将新字段添加为prop的函数

add_action( 'woocommerce_admin_process_product_object', 'my_admin_process_product_object' );
function my_admin_process_product_object( $product ) {
    $product->set_props(
        array(
            'shipping_info' => isset( $_POST['_shipping_info'] ) ? wc_clean( wp_unslash( $_POST['_shipping_info'] ) ) : null,
        )
    );
}

我想我错过了一步。是否应该从woocommerce_process_product_meta附加的函数WC_Meta_Box_Product_Data :: save wich自动保存?

编辑

我发现了缺少的步骤。我需要在抽象类WC_Data的受保护数组$ extra_data中添加我的自定义帖子元。

我不太擅长OOP,所以..如何访问该数组以推送自定义数据?

谢谢!

1 个答案:

答案 0 :(得分:0)

我可以看到您正在做$shipping_info = get_post_meta( $post->ID, '_shipping_info', true ); 那么,为什么不省事,只使用update_post_meta

add_action( 'woocommerce_admin_process_product_object', 'my_admin_process_product_object' );
function my_admin_process_product_object( $product ) {
    update_post_meta($product->get_id(), '_shipping_info',  wc_clean( wp_unslash( $_POST['_shipping_info'] ) ) );
}