2016-12-23 116 views
3

我正在自定义WooCommerce,我想在产品页面中添加和显示自定义文本(条件和品牌)。在单品页面中在SKU下显示自定义字段值

此仓位位于“库存”或“SKU”元下。我已经设法创建和保存自定义字段,但是如何将这些元值打印到产品页面。

请帮忙!

这是我在functions.php代码:

// Display Fields 
add_action('woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields'); 
// Text Field 
function woo_add_custom_general_fields() { 
    global $woocommerce, $post; 
    echo '<div class="options_group">'; 
    woocommerce_wp_text_input( 
    array( 

     'id'   => '_conditions', 
     'label'  => __('Conditions', 'woocommerce'), 
     'placeholder' => 'i.e: brand-new; refurbished; defected...', 
     'desc_tip' => 'true', 
     'description' => __('Enter the conditions of the products here.', 'woocommerce') 
    ) 
); 
    echo '</div>'; 
    woocommerce_wp_text_input( 
    array( 

     'id'   => '_bands', 
     'label'  => __('Brands', 'woocommerce'), 
     'placeholder' => 'i.e: Lacoste; Hugo Boss...etc', 
     'desc_tip' => 'true', 
     'description' => __('Enter names of the Brands of the products if any.', 'woocommerce') 
    ) 
); 
} 
// Save Fields 
add_action('woocommerce_process_product_meta', 'woo_add_custom_general_fields_save'); 

感谢

回答

4

在你的问题中提供的代码是不完整的,应该是这样的:

// Enabling and Displaying Fields in backend 
add_action('woocommerce_product_options_general_product_data', 'woo_add_custom_general_fields'); 
function woo_add_custom_general_fields() { 
    global $woocommerce, $post; 

    echo '<div class="options_group">'; 

    woocommerce_wp_text_input(array(// Text Field type 
     'id'   => '_conditions', 
     'label'  => __('Conditions', 'woocommerce'), 
     'placeholder' => 'i.e: brand-new; refurbished; defected...', 
     'desc_tip' => 'true', 
     'description' => __('Enter the conditions of the products here.', 'woocommerce') 
    )); 

    woocommerce_wp_text_input(array(// Text Field type 
     'id'   => '_brands', // ===> NOT '_bands' 
     'label'  => __('Brands', 'woocommerce'), 
     'placeholder' => 'i.e: Lacoste; Hugo Boss...etc', 
     'desc_tip' => 'true', 
     'description' => __('Enter names of the Brands of the products if any.', 'woocommerce') 
    )); 

    echo '</div>'; // Closing </div> tag HERE 
} 

// Save Fields values to database when submitted (Backend) 
add_action('woocommerce_process_product_meta', 'woo_save_custom_general_fields'); 
function woo_save_custom_general_fields($post_id){ 

    // Saving "Conditions" field key/value 
    $conditions_field = $_POST['_conditions']; 
    if(!empty($conditions_field)) 
     update_post_meta($post_id, '_conditions', esc_attr($conditions_field)); 

    // Saving "Brands" field key/value 
    $brands_field = $_POST['_brands']; 
    if(!empty($brands_field)) 
     update_post_meta($post_id, '_brands', esc_attr($brands_field)); 
} 

现在,在您的产品页面中显示此元数据值时,您将使用get_post_meta()函数进行挂钩函数上。这里下面你将看到woocommerce_single_product_summary钩所有的钩状模板及其优先级(显示顺序):

/** 
    * woocommerce_single_product_summary hook 
    * 
    * @hooked woocommerce_template_single_title - 5 
    * @hooked woocommerce_template_single_price - 10 
    * @hooked woocommerce_template_single_excerpt - 20 
    * @hooked woocommerce_template_single_add_to_cart - 30 
    * @hooked woocommerce_template_single_meta - 40 
    * @hooked woocommerce_template_single_sharing - 50 
*/ 

的“库存”或“SKU”数据由woocommerce_template_single_meta其中拥有优先显示现在你需要显示你的关卡字段值。然后,您可以为此选择优先级。

这是在“SKU”要输出的自定义字段中的值在产品页面代码:

add_action('woocommerce_single_product_summary', 'woo_display_custom_general_fields_values', 45); 
function woo_display_custom_general_fields_values() { 
    global $product; 

    echo '<p class="custom-conditions">Conditions: ' . get_post_meta($product->id, '_conditions', true) . '</p>'; 
    echo '<p class="custom-brands">Brands: ' . get_post_meta($product->id, '_brands', true) . '</p>'; 
} 

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

此代码已经过测试并可正常工作。

相关问题