我正在尝试向产品变体添加自定义字段,并在附加信息区域"中显示产品的自定义字段值.
I'm trying to add a custom field to product variations, and display the custom field value on products in the "additional information area".
我正在使用 "WooCommerce:为每个产品添加自定义字段变化".
自定义字段工作正常,但我无法在产品页面上显示该值.
The custom field is working fine, but I cannot seam to display the value on the product page.
这是我目前所拥有的:
// 1. Add custom field input @ Product Data > Variations > Single Variation
add_action( 'woocommerce_variation_options_pricing', 'Add_custom_field_to_variations', 10, 3 );
function Add_custom_field_to_variations( $loop, $variation_data, $variation ) {
woocommerce_wp_text_input( array(
'id' => 'custom_field[' . $loop . ']',
'class' => 'short',
'label' => __( 'Custom Field', 'woocommerce' ),
'value' => get_post_meta( $variation->ID, 'custom_field', true )
));
}
// 2. Save custom field on product variation save
add_action( 'woocommerce_save_product_variation', 'Save_custom_field_variations', 10, 2 );
function Save_custom_field_variations( $variation_id, $i ) {
$custom_field = $_POST['custom_field'][$i];
if ( isset( $custom_field ) ) {
update_post_meta( $variation_id, 'custom_field', esc_attr( $custom_field ) );
}
}
// 3. Store custom field value into variation data
add_filter( 'woocommerce_available_variation', 'Add_custom_field_variation_data' );
function Add_custom_field_variation_data( $variations ) {
$variations['custom_field'] = '<div class="woocommerce_custom_field">Custom Field: <span>' . get_post_meta( $variations[ 'variation_id' ], 'custom_field', true ) . '</span></div>';
return $variations;
}
// 4. Display custom field on the additional information area
function Display_product_attributes2($product_attributes, $variations){
$product_attributes['custom_field'] = [
'label' => __('custom', 'text-domain'),
'value' => get_post_meta( $variation_id, '_custom_field', true ),
];
return $product_attributes;
}
add_filter('woocommerce_display_product_attributes', 'Display_product_attributes2', 10, 2);
At 'value' =>get_post_meta( $variation_id, '_custom_field', true ) 你使用了 $variation_id 而这没有定义.
At 'value' => get_post_meta( $variation_id, '_custom_field', true ) you make use of the $variation_id while this is not defined.
因此您可以使用 foreach 循环和 $variations->get_children(); 代替添加自定义标签 &附加信息区"中的值
So you can make use a foreach loop and $variations->get_children(); instead to add a custom label & value in the "additional information area"
// 4. Display custom field on the additional information area
function display_product_attributes( $product_attributes, $variations ) {
// Get childIDs in an array
$children_ids = $variations->get_children();
foreach ( $children_ids as $child_id ) {
$value = get_post_meta( $child_id, 'custom_field', true );
// True
if ( $value ) {
// rows
$product_attributes[ 'custom_field ' . $child_id ] = array(
'label' => __('custom', 'woocommerce'),
'value' => $value,
);
}
}
return $product_attributes;
}
add_filter('woocommerce_display_product_attributes', 'display_product_attributes', 10, 2);
这篇关于WooCommerce:从产品变体中获取自定义字段并将其显示在“附加信息区域"上;的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!
不能使用 'Object 作为类名,因为它是保留的Cannot use #39;Object as class name as it is reserved Cake 2.2.x(不能使用 Object 作为类名,因为它是保留的 Cake 2.2.x)
OAuth 重定向后会话丢失Session is lost after an OAuth redirect(OAuth 重定向后会话丢失)
Cakephp 3.x 中的分页排序Pagination Sort in Cakephp 3.x(Cakephp 3.x 中的分页排序)
CakePHP 多个应用程序的共享核心CakePHP Shared core for multiple apps(CakePHP 多个应用程序的共享核心)
在 CakePHP 3 上登录 [ Auth->identify() ] 始终为 falLogin [ Auth-gt;identify() ] always false on CakePHP 3(在 CakePHP 3 上登录 [ Auth-identify() ] 始终为 false)
致命错误:允许的内存大小为 134217728 字节已用尽Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 87 bytes)(致命错误:允许的内存大小为 134217728 字节已用尽