#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>
Это работает отлично!