Связь ACF не отображается, если я не помещаю код перед всеми остальными циклами WordPress

#wordpress #advanced-custom-fields

#wordpress #расширенные пользовательские поля

Вопрос:

Я пытаюсь отобразить поле связи ACF на моей домашней странице WordPress. На моей домашней странице есть множественные циклы запросов для отображения сообщений из определенных категорий.

Это работает, если я помещаю свой код вверху страницы. Но когда я пытаюсь вставить свой код в середину моей страницы, после цикла запроса, ничего не появляется. Я предполагаю, что существует конфликт с моим циклом запроса. Я использую сброс данных post в каждом цикле.

Есть какие-нибудь подсказки?

Вот мой код :

 <?php $posts = get_field('relationnel');

if($posts): 
?>
<h3>Articles Similaires</h3>

<div class="container">
<div class="row">   
<?php foreach( $posts as $post): // ne pas changer $post IMPORTANT 
setup_postdata($post); 
?>
<div class="col-lg-4 col-md-6 col-sm-6"> 
<div class="col-lg-12 wrapper-archives ">
<h2>        <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
<br></h2>
        <h3>        <?php the_field('date'); ?>
<br></h3>
<div class="sommaire">
<?php // check if the repeater field has rows of data
if( have_rows('sommaire') ): while ( have_rows('sommaire') ) : the_row(); ?>
<?php  // display a sub field value the_sub_field('titre'); ?> </br>  
<?php  endwhile; else : // no rows found
endif;?>
</div>  </div> </div>
<?php endforeach; ?>

</div>
</div>
<?php 
    wp_reset_postdata(); // IMPORTANT - réinitialiser l'objet $post sur la 
requête principale
endif; 
?>
  

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

 <div id="owl-example" class="owl-carousel">
<?php query_posts( array( 'posts_per_page' => 3,) ); ?>

<?php while ( have_posts() ) : the_post();?>
<?php if (has_post_thumbnail( $post->ID ) ): ?> 
<?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID 
), 'single-post-thumbnail' ); ?>

<div class="owl-slide" style="background-image: url('<?php echo $image[0]; 
>');">
<div class="owl--text">
<span class="categorie-home"><?php the_category (); ?></span>   
<?php the_title (); ?>  </div>
</div>          <?php endif; ?>

 <?php endwhile;  // 4. On réinitialise à la requête principale (important)
 wp_reset_postdata();
 ?>
 </div>
  

Ответ №1:

Я решаю проблему, помещая wp_reset_query вместо wp_reset_postdata в мой цикл запросов

  <?php wp_reset_query(); ?>
  

Теперь мой цикл запроса :

 <div id="owl-example" class="owl-carousel">
<?php query_posts( array( 'posts_per_page' => 3,) ); ?>

<?php while ( have_posts() ) : the_post();?>
<?php if (has_post_thumbnail( $post->ID ) ): ?> 
<?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID 
), 'single-post-thumbnail' ); ?>

<div class="owl-slide" style="background-image: url('<?php echo $image[0]; 
>');">
<div class="owl--text">
<span class="categorie-home"><?php the_category (); ?></span>   
<?php the_title (); ?>  </div>
</div>          <?php endif; ?>

<?php endwhile;  // 4. On réinitialise à la requête principale (important)

?>
<?php wp_reset_query(); ?>

</div>
  

Это работает отлично!