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



我正在尝试使用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 中自动保存吗?

编辑

我找到了缺失的步骤。我需要在抽象类WC_Data的受保护数组 $extra_data 中添加我的自定义后元。

我不太擅长 OOP,那么如何访问该数组来推送我的自定义数据呢?

我可以看到你只是在做$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'] ) ) );
}

最新更新