Как показать ACF в цикле WP_Query с помощью ‘post_type’ => ‘product’

#wordpress #advanced-custom-fields

#wordpress #дополнительно-пользовательские поля

Вопрос:

Попробуйте добиться этого: я создал ACF (пользовательское поле) в своем продукте WooCommerce, и теперь я пытаюсь отобразить это поле в своем шаблоне с помощью этого кода:

  <ul class="products">
    <?php

    $args = array(
        'posts_per_page' => 20,
        'post_type' => 'product',
        'tax_query' => array(
            array(
                'taxonomy' => 'product_type',
                'field'    => 'name',
                'terms'    => 'grouped',
            ),
        ),
    );
    $loop = new WP_Query( $args );
    if ( $loop->have_posts() ) {
        while ( $loop->have_posts() ) : $loop->the_post();
            $linked_with_items = the_field('linked_with_items');
            the_title('<strong>', '</strong>'); echo '<br />';
            echo $linked_with_items;
        endwhile;
    } else {
        echo __( 'No products found' );
    }
    wp_reset_postdata();
    ?>
</ul><!--/.products-->
 

Но что бы я ни пробовал с get_field (), поле не отображается в моем шаблоне.
Кто-нибудь может помочь?
https://www.advancedcustomfields.com /

К вашему сведению, это окончательный код

  <?php if( have_rows('catalogue') ): ?>
   <?php
       while( have_rows('catalogue') ): the_row(); // catalogue is the field
       the_sub_field('linked_with_items'); ?>
 <?php endwhile; ?>
<?php endif; ?>
 

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

1. Просто чтобы подтвердить, что вы правильно установили значение для этого нового поля в своих сообщениях о продуктах? что вы получаете var_dump(get_field('linked_with_items')); ?

2. NULL — это ответ, который я получаю

Ответ №1:

Вы могли бы попробовать с этим:

 $linked_with_items  = get_field('linked_with_items', get_the_ID());
 

Если это не сработает, просто в качестве теста вы можете попробовать просто перебирать сообщения с помощью foreach

 foreach ( $loop->posts as $post ) {
    $linked_with_items  = get_field('linked_with_items', $post->ID);
}
 

Если ничего из этого не работает, пожалуйста, убедитесь, что в вашем продукте действительно есть это настраиваемое поле, дважды проверьте настройки поля ACF (раздел правил), список полей и дважды проверьте страницу редактирования вашего продукта, чтобы увидеть, отображаются ли там поля.

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

1. Оба метода не работают. Я думаю, что я делаю что-то не так с циклом … потому что этот цикл находится внутри другого цикла. Я продолжаю искать

2. Пожалуйста, попробуйте var_dump($post-> ID); во втором решении и поиске в базе данных, действительно ли поле acf_field присутствует и сохраняется. Или сделайте наоборот, найдите сообщение с этим acf_field, которое обязательно сохранено, а затем используйте его жестко (просто как тест), чтобы проверить, работает ли get_field для вас

3. Действительно, тогда вы увидите int (304) int (270) int (193) int (19) int (13) int (6)

4. Хорошо, теперь используйте этот идентификатор, выполните поиск в таблице wp_postmeta и посмотрите, есть ли у какой-либо из них «linked_with_items» в качестве одной из строк postmeta с фактическим значением

5. спасибо, что мой разум пошел в правильном направлении! linked_with_items был не полем, а подполем внутри поля, глупо меня