2017-09-22 39 views
2

现在,我可以将1个自定义选择菜单添加到我的产品变体区域。WooCommerce产品变体设置选项卡中的多个选择自定义字段

但是,我想添加一个额外的选择菜单的产品变化,但不知道如何。

这是我对我的孩子主题functions.php生成一个菜单代码:

// Add Variation Settings 
add_action('woocommerce_product_after_variable_attributes', 'variation_settings_fields', 10, 3); 
// Save Variation Settings 
add_action('woocommerce_save_product_variation', 'save_variation_settings_fields', 10, 2); 
/** 
* Create new fields for variations 
* 
*/ 
function variation_settings_fields($loop, $variation_data, $variation) { 

    // Select 
    woocommerce_wp_select( 
    array( 
     'id'   => '_select[' . $variation->ID . ']', 
     'label'  => __('My Select Field', 'woocommerce'), 
     'description' => __('Choose a value.', 'woocommerce'), 
     'value'  => get_post_meta($variation->ID, '_select', true), 
     'options' => array(
      'one' => __('Option 1', 'woocommerce'), 
      'two' => __('Option 2', 'woocommerce'), 
      'three' => __('Option 3', 'woocommerce') 
      ) 
     ) 
    ); 

} 
/** 
* Save new fields for variations 
* 
*/ 
function save_variation_settings_fields($post_id) { 

    // Select 
    $select = $_POST['_select'][ $post_id ]; 
    if(! empty($select)) { 
     update_post_meta($post_id, '_select', esc_attr($select)); 
    } 

} 

回答

1

在产品的变化选项卡设置中添加“选择” 2个型自定义字段,是很容易的,你应该重复字段设置每个不同的ID slu and和关键slu。。我轻微改变了代码,它也起作用。

这里是代码:

// Add 2 custom fields in Variation Settings 
add_action('woocommerce_product_after_variable_attributes', 'variation_settings_fields', 10, 3); 
function variation_settings_fields($loop, $variation_data, $variation) { 

    // Select 1 
    woocommerce_wp_select(array(
     'id'   => 'first_custom_field_' . $variation->ID, 
     'label'  => __('My Select Field 1', 'woocommerce'), 
     'value'  => get_post_meta($variation->ID, '_first_custom_field', true), 
     'options' => array(
      '' => __('Please choose a value', 'woocommerce'), 
      'value 1' => __('Option 1', 'woocommerce'), 
      'value 2' => __('Option 2', 'woocommerce'), 
      'value 3' => __('Option 3', 'woocommerce') 
     ) 
    )); 

    // Select 2 
    woocommerce_wp_select(array(
     'id'   => 'second_custom_field_' . $variation->ID, 
     'label'  => __('My Select Field 2', 'woocommerce'), 
     'value'  => get_post_meta($variation->ID, '_second_custom_field', true), 
     'options' => array(
      '' => __('Please choose a value', 'woocommerce'), 
      'value 1' => __('Option 1', 'woocommerce'), 
      'value 2' => __('Option 2', 'woocommerce'), 
      'value 3' => __('Option 3', 'woocommerce') 
     ) 
    )); 
} 
// Save 2 custom fields values in Variation post meta data 
add_action('woocommerce_save_product_variation', 'save_variation_settings_fields', 10, 2); 
function save_variation_settings_fields($post_id) { 

    // Select 1 
    $select = $_POST["first_custom_field_$post_id"]; 
    if(! empty($select)) { 
     update_post_meta($post_id, '_first_custom_field', esc_attr($select)); 
    } 

    // Select 2 
    $select = $_POST["second_custom_field_$post_id"]; 
    if(! empty($select)) { 
     update_post_meta($post_id, '_second_custom_field', esc_attr($select)); 
    } 
} 

代码放在您的活动子主题(或主题)的function.php文件或也以任何插件文件。

所有代码都在Woocommerce 3+上测试过并且可以正常工作。你会得到这样的:

enter image description here


示例使用或显示该值(前端):

// You need to get the variation Id from somewhere 
$variation_id = 41; 

// Then you get this custom post meta data 
$value1 = get_post_meta($variation_id, '_first_custom_field', true); 
$value2 = get_post_meta($variation_id, '_second_custom_field', true); 

// And may be display it 
echo '<p>My value 1: ' . $value1 . '</p>'; 
echo '<p>My value 2: ' . $value2 . '</p>'; 
+1

非常感谢。只要我在30分钟内回到我的办公桌,我会试用这个:-) – michaelmcgurk

+0

它工作得很好 - 只是后续。如何在前端显示此值? – michaelmcgurk

+1

@michaelmcgurk更新了我的答案,关于使用... – LoicTheAztec

相关问题