我在function.php中有这个代码,如何在管理邮件订单中显示这个字段值?谢谢!
//1.1 Display field in admin
add_action('woocommerce_product_options_inventory_product_data', 'woocommerce_product_custom_fields');
function woocommerce_product_custom_fields(){
global $woocommerce, $post;
echo '<div class="product_custom_field">';
woocommerce_wp_text_input(
array(
'id' => '_custom_product_text_field',
'placeholder' => 'Name',
'label' => __('customtext', 'woocommerce'),
'desc_tip' => 'true'
)
);
echo '</div>';
}
//1.2 Save field
add_action('woocommerce_process_product_meta', 'woocommerce_product_custom_fields_save');
function woocommerce_product_custom_fields_save($post_id){
$woocommerce_custom_product_text_field = $_POST['_custom_product_text_field'];
if (!empty($woocommerce_custom_product_text_field))
update_post_meta($post_id, '_custom_product_text_field', esc_attr($woocommerce_custom_product_text_field));
}
答案 0 :(得分:0)
更新2 有两个非常相似的选择(第一个更好):
要在电子邮件中轻松显示此产品自定义字段值(以及订单中),您可以使用以下代码,一旦下订单,这将在订单商品中保存此数据。
第一个替代代码(使用WC 3+最新CRUD方法的最佳新代码):
// 1.3 Save custom field value in order items meta data (only for Woocommerce versions 3+)
add_action( 'woocommerce_checkout_create_order_line_item', 'add_custom_field_to_order_item_meta', 20, 4 );
function add_custom_field_to_order_item_meta( $item, $cart_item_key, $values, $order ) {
$custom_field_value = get_post_meta( $item->get_product_id(), '_custom_product_text_field', true );
if ( ! empty($custom_field_value) ){
$item->update_meta_data( __('Custom label', 'woocommerce'), $custom_field_value );
}
}
......或......
另一个替代(旧的更新):
// 1.3 Save custom field value in order items meta data
add_action( 'woocommerce_add_order_item_meta', 'add_custom_field_to_order_item_meta', 20, 3 );
function add_custom_field_to_order_item_meta( $item_id, $values, $cart_item_key ) {
$custom_field_value = get_post_meta( $values['data']->get_id(), '_custom_product_text_field', true );
if ( ! empty($custom_field_value) )
wc_add_order_item_meta( $item_id, __('Custom label', 'woocommerce'), $custom_field_value );
}
代码进入活动子主题(或主题)的function.php文件。经过测试并正常工作。
在订单上你会得到(对于两者):
在电子邮件上你会得到(两者都有):
答案 1 :(得分:0)
这是我现在的代码
//1.1 Display custom field
add_action('woocommerce_product_options_inventory_product_data', 'woocommerce_product_custom_fields');
add_action('woocommerce_process_product_meta', 'woocommerce_product_custom_fields_save');
function woocommerce_product_custom_fields(){
global $woocommerce, $post;
echo '<div class="product_custom_field">';
woocommerce_wp_text_input(
array(
'id' => '_custom_product_text_field',
'placeholder' => 'text',
'label' => __('Custom', 'woocommerce'),
'desc_tip' => 'true'
)
);
echo '</div>';
}
// 1.2 Save this field in admin
function woocommerce_product_custom_fields_save($post_id){
$woocommerce_custom_product_text_field = $_POST['_custom_product_text_field'];
if (!empty($woocommerce_custom_product_text_field))
update_post_meta($post_id, '_custom_product_text_field', esc_attr($woocommerce_custom_product_text_field));
}
// 1.3 Save custom field value in order items meta data
add_action( 'woocommerce_add_order_item_meta', 'add_custom_field_to_order_item_meta', 20, 3 );
function add_custom_field_to_order_item_meta( $item_id, $values, $cart_item_key ) {
$custom_field_value = get_post_meta( $values['data']->get_id(), '_custom_product_text_field', true );
if ( ! empty($$custom_field_value) )
wc_add_order_item_meta( $item_id, __('Custom label', 'woocommerce'), $custom_field_value );
}