Как вывести несколько пользовательских полей в подключенной функции WooCommerce?

#php #wordpress #woocommerce #advanced-custom-fields #custom-fields

#php #wordpress #woocommerce #advanced-custom-fields #пользовательские поля

Вопрос:

Я использую следующий фрагмент кода для получения данных из ACF на вкладку дополнительная информация на странице одного продукта. Теперь мне нужно добавить несколько таких меток со значениями. Я попробовал несколько вещей, но, похоже, не могу понять, как добавить больше в этот фрагмент кода. Мне также нужно добавить «cm» за значением, которое будет извлечено, потому что это измерение. Но первая проблема является самой важной. Был бы признателен!

 function yourprefix_woocommerce_display_product_attributes($product_attributes, $product){
    $product_attributes['customfield'] = [
        'label' => __('Zithoogte', 'text-domain'),
        'value' => get_post_meta($product->get_ID(), '_custom_meta_field1', true),
    ];
    return $product_attributes;
}
add_filter('woocommerce_display_product_attributes','yourprefix_woocommerce_display_product_attributes', 10, 2);```
  

Ответ №1:

Обновлено — включены операторы if для каждого пользовательского поля, проверяющие, что значение не является пустым

Вы пробовали использовать что-то вроде (для нескольких пользовательских полей):

 function yourprefix_woocommerce_display_product_attributes( $product_attributes, $product ){

    // First custom field
    $value1 = get_post_meta($product->get_ID(), '_custom_meta_field1', true);
    if ( ! empty( $value1 ) ) {  
         $product_attributes['customfield1'] = [
            'label' => __('Zithoogte', 'text-domain'),
            'value' => $value1 . ' cm'
        ];
    }

    // 2nd custom field    
    $value2 = get_post_meta($product->get_ID(), '_custom_meta_field2', true);
    if ( ! empty( $value2 ) ) {  
        $product_attributes['customfield2'] = [
            'label' => __('Label text 2', 'text-domain'),
            'value' => $value2 . ' cm'
        ];
    }

    // 3rd custom field     
    $value3 = get_post_meta($product->get_ID(), '_custom_meta_field3', true);
    if ( ! empty( $value3 ) ) {
        $product_attributes['customfield3'] = [
            'label' => __('Label text 3', 'text-domain'),
            'value' => $value3 . ' cm'
        ];
    }
    
    return $product_attributes;
}
add_filter('woocommerce_display_product_attributes','yourprefix_woocommerce_display_product_attributes', 10, 2);
  

Это должно работать.

Комментарии:

1. Это сработало, спасибо! Теперь еще один вопрос, вы также знаете, что добавить, чтобы сделать так, чтобы, если поле было пустым, оно ничего не возвращало? Например, когда я позволяю значению в ACF, которое должно прийти к надписи text 3, быть пустым, я не хочу, чтобы строка отображалась на странице продукта. Это простая настройка?