2016-12-23 8 views
3

Я настраиваю WooCommerce, и я хотел бы добавить и отобразить пользовательские тексты (Условия и бренды) на страницах продукта.Отображение значений пользовательских полей под SKU на страницах одного продукта

Позиция находится либо под надписью «in Stock», либо «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() в подключенном fu nction. Здесь ниже вы увидите все крючки шаблонов в 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, которые имеют приоритет из 40. Теперь вам нужно сразу отобразить значения ваших таможенных полей. Тогда вы можете выбрать приоритет для этой цели.

Вот код, который будет выводить свои собственные значения полей на страницах продукта в разделе «Артикул»:

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 файл вашей активной темы ребенка (активной темы или в любом файле плагина).

Этот код протестирован и работает.