@DimkaMixov

Post__in + ACF: не извлекаются все цифры или как сделать пагинацию у ACF «записи»?

Доброго времени, уважаемые знатоки! Подскажите как мне сделать пагинацию у выбранных записей их поля "Записи" в плагине ACF

Вариант №1 (преимущественней)

Записи вывожу таким кодом:

<?php $id_page_services_id = get_field( 'id_page_services_id' ); ?>
<?php if ( $id_page_services_id ) : ?>
	<?php foreach ( $id_page_services_id as $post ) : ?>
		<?php setup_postdata ( $post ); ?>
		<a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
	<?php endforeach; ?>
	<?php wp_reset_postdata(); ?>
<?php endif; ?>


Все отлично выводится, но пагинацию прикрутить не получается, я так понимаю что постраничную пагинацию прикрепить можно только к wp new query. Сделал вариант №2, но это тоже не работает

Вариант №2

Вывод записей обычным циклом и через поле ACF "Текст" вывожу страницы по ID, все вроде бы работает как надо, но выводится только первая страница.

Есть обычный new WP_Query

<div class="row grid img-reset">
               
               <?php
 
                  $idsss = get_field( 'id_page_services_id' ); // Кладу в переменную числа из поля (Пример - 250, 265, 669, 243)
 
                  $argss = array(  
 
                    'posts_per_page' => 12,
                    'paged' => $paged,
                    'post_type' => 'page',
 
                    'post_parent__in' => array( $idss ),   // Не работает т.к. надо (для примера)
                    'post__in'  => array( $idsss ),            // Не работает т.к. надо
                    'post__in'  => [ $idsss ],                   // Не работает т.к. надо
 
                    'post__in'  => [ 250, 265, 669, 243 ], // Так идеально работает
                    
                  )
               ?>
                            
               <?php
                  $count_items = 1;
                  $paged = get_query_var( 'paged', 1 );
                  $twoprocedd = new WP_Query( $argss );
               ?>
 
               <?php if ( $twoprocedd->have_posts() ) { while ( $twoprocedd->have_posts() ) { $twoprocedd->the_post(); ?>
 
               <a href="<?php the_permalink(); ?>" rel="bookmark" title="<?php the_title(); ?>">
                  <div class="col-lg-4 col-sm-6" style="padding-top:30px">
                     <figure class="effect-bubba" style="position:relative">
                        <?php the_post_thumbnail('thumbs-all'); ?>
                        <figcaption>
                           <div class="block-table">
                              <div class="block-table-cell">
                                 <div class="h4"><?php the_title(); ?></div>
                                 <div class="subname top-15"><?php the_excerpt(); ?></div>
                              </div>
                           </div>
                        </figcaption>
                     </figure>
                  </div>
               </a>
 
               <?php } ?>
 
               <?php wp_reset_query(); ?>
 
               <?php } else { ?>
                 <p>Нет записей для отображения.</p>
                 <style>.last-bl-none-two {display: none;}</style>
               <?php } ?>
 
</div>


Т.е. я так понимаю что в последнем примере я из поля извлекаю массив, но ни как не цифры и поэтому не отображаются нужные страницы.

Получается что я прописываю на странице в поле цифры / ID с нужными страницами, выводится только первая страница, а остальные ID, после запятой, я так понимаю просто игнорируются.

К примеру указываю 250, 265, 669, 243. Страница с id 250 выводится, а вот то что после первой запятой уже нет. А если вывести просто поле на странице через the_field то все цифры показываются.

Возможно что поле ACF должно быть не "Текст", а какое то другое, либо как то по другому это поле класть в переменную.
  • Вопрос задан
  • 50 просмотров
Решения вопроса 1
cesnokov
@cesnokov
<head>&nbsp;</head>
Если в переменной id_page_services_id строка 250, 265, 669, 243 то вначале из неё надо сделать массив, например так:
$idsss = get_field( 'id_page_services_id' );
$idsss = explode(', ', $idsss); 
$idsss = array_filter($idsss);

А далее использовать его как параметр:
'post__in' => $idsss
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы