Intereting Posts
Настройка виджетов в wordpress с уникальным идентификатором для аргумента after_title Как отключить «Ваш сайт обновлен до WordPress xyz» электронной почты администратора? Пользовательские $ _GET vars в записи wordpress с постоянной ссылкой Фильтр WP_Query для сообщений, имеющих определенную метазначение Как получить фид для страницы «Тип страницы»? Перенаправить старые строки строки запроса на новый URL-адрес add_rewrite_rule Следующая Предыдущая Сообщение в wordpress с предыдущей / следующей ссылкой с заголовком? Как сортировать результаты из таблицы пользовательских баз данных Изменить контент продукта WooCommerce на основе категории Подключение нескольких типов сообщений? Или ссылки на сообщения «Новости» с сообщениями «Игра»? Как правильно экспортировать / импортировать базу данных WordPress (MySQL) через командную строку? Поиск пользовательских типов сообщений Страница архива типа сообщения не работает Пользовательская таксономия wp_query беды. Вызов пользовательских полей для страниц (не сообщений)

Получение настраиваемого поля в середине цикла

есть ли способ, которым я могу получить

<?php the_field("do_stuff")?> 

идти в середине многократного цикла следующим образом:

  <?php query_posts('cat=4&posts_per_page=5'); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <h1><?php the_title() ;?></h1> <?php the_post_thumbnail(); ?> <?php the_excerpt(); ?> <?php endwhile; else: ?> <p>Sorry, there are no posts to display</p> <?php endif; ?> <hr> <?php rewind_posts(); ?> <?php query_posts('cat=5&posts_per_page=5'); ?> <?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <h2><?php the_title() ;?></h2> <?php the_excerpt(); ?> <?php endwhile; else: ?> <p>Sorry, there are no posts to display</p> <?php endif; ?> 

Я попытался положить его выше rewind_posts и чуть ниже его, но он не отображается? Код поля является частью плагина «Дополнительные пользовательские поля», и я хотел бы, чтобы пользователь мог опубликовать то, что когда-либо захочет, между двумя разделами сообщений.

благодаря

Solutions Collecting From Web of "Получение настраиваемого поля в середине цикла"

Вы не должны использовать query_posts вообще, это просто проблематично и подвержено ошибкам

Примечание. Эта функция не предназначена для использования плагинами или темами. Как поясняется ниже, есть более эффективные, более эффективные варианты для изменения основного запроса. query_posts () является слишком упрощенным и проблематичным способом изменения основного запроса страницы путем замены его новым экземпляром запроса. Он неэффективен (повторно запускает SQL-запросы), и в некоторых случаях он будет неудачно (особенно часто при разбиении на страницы)

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

Я просто вернусь к основному запросу и использую его как есть. Счетчик встроенных циклов $wp_query->current_post доступен в любом месте вашего шаблона, поэтому вы можете использовать его для подсчета ваших сообщений

Это не проверено, но вы, скорее всего, можете сделать что-то подобное. Просто добавьте это после своего цикла. * Remeber, счетчик циклов начинается с нуля, а не один

 if( 0 == $wp_query->current_post ) { // Add whatever you need to add to appear after post one } 

Если вам нужно разбивать страницы и нуждаться в этом после каждого первого сообщения на каждой странице, я бы подумал, что что-то вроде этого будет работать

 if( 0 == $wp_query->current_post || 0 == $wp_query->current_post%JUST_ADD_YOUR_POSTS_PER_PAGE_VALUE_HERE ) { // Add whatever you need to add to appear after post one } 

РЕДАКТИРОВАТЬ

Динамика резко изменилась, поэтому мой первый подход не сработает. Вам нужно будет запустить два пользовательских цикла только из-за того, что оба они совсем разные. Я бы предложил использовать WP_Query вместо query_posts . Вы даже можете использовать get_posts качестве другой альтернативы.

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

Попробуйте что-то вроде этого

  <?php $query_one = new WP_Query('cat=4&posts_per_page=5'); ?> <?php if ( $query_one->have_posts() ) : while ( $query_one->have_posts() ) : $query_one->the_post(); ?> <h1><?php the_title() ;?></h1> <?php the_post_thumbnail(); ?> <?php the_excerpt(); ?> <?php endwhile; else: ?> <p>Sorry, there are no posts to display</p> <?php endif; ?> <?php wp_reset_postdata(); // VERY VERY IMPORTANT?> <hr> <?php // PLACE YOUR FIELD HERE ?> <?php $query_two = new WP_Query('cat=5&posts_per_page=5'); ?> <?php if ( $query_two->have_posts() ) : while ( $query_two->have_posts() ) : $query_two->the_post(); ?> <h2><?php the_title() ;?></h2> <?php the_excerpt(); ?> <?php endwhile; else: ?> <p>Sorry, there are no posts to display</p> <?php endif; ?> <?php wp_reset_postdata(); // VERY VERY IMPORTANT?> 

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

 wp_reset_postdata(); the_field("do_stuff"); 

Если вы не передадите второй аргумент в the_field он будет использовать все, что находится в глобальном $post->ID . Вы также можете передать явный идентификатор сообщения, который вы хотите получить из полей:

 $the_id_of_my_page = 42; the_field( "do_stuff", $the_id_of_my_page );