在 Woocommerce 管理员电子邮件通知中显示产品自定义字段值
Display a product custom field value in Woocommerce admin email notifications
我的 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));
}
更新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.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 );
}
我的 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));
}
更新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.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 );
}