Intereting Posts
Нельзя использовать разбивку на страницы с пользовательской таксономией Правило Single Redirection для ссылок на страницы и архивы Есть ли способ использовать файловую систему WP без учетных данных, когда FS_METHOD НЕ настроен на прямой? Целевые таксономические запросы Предупреждения в навигационном меню при посещении страниц запроса Я не могу получить доступ к панели входа в мой автономный веб-сайт Как сделать мой домашний образ прозрачным в рамках темы Edin? Что не так с этим кодом? Как я могу получить последнее сообщение от wp multisite? Получить имена таксономии по идентификатору сообщения next_ / previous_post_link () `in_same_category`, кажется, терпит неудачу, когда true Проверить действительную электронную почту после бездействия пользователя? WordPress многоязычный, показывать язык по умолчанию, если отсутствует перевод Сообщение формы на страницу WordPress = неправильный шаблон Являются ли шорткоды чувствительными к регистру?

Запрос типа персонализированного сообщения дважды на одной странице

Я пытаюсь сделать страницу, на которой отображается пользовательский тип сообщения .

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

Страница продуктов :

<div> <main> <?php if ( have_posts() ) : ?> <header class="page-header"> <?php the_archive_title( '<h1 class="page-title">', '</h1>' ); the_archive_description( '<div class="archive-description">', '</div>' ); ?> </header> <!-- .page-header --> <?php /* Start the Loop */ $args = array( 'post_type' => 'kollektion' ); $loop = new WP_Query( $args ); if( $loop ->have_posts() ) : while( $loop->have_posts() ) : $loop->the_post(); get_template_part( 'template-parts/content-kollektion', get_post_format() ); endwhile; endif; the_posts_navigation(); else : get_template_part( 'template-parts/content-kollektion', 'none' ); endif; wp_reset_postdata(); ?> </main> <!-- #main --> </div> <!-- #primary --> <!-- modal Kollektion 02 --> <div class="modalDialog"> <section class="kollektion-slider"> <?php rewind_posts(); /* Start the Loop */ $args = array( 'post_type' => 'kollektion' ); $loop = new WP_Query( $args ); if( $loop ->have_posts() ) : while( $loop->have_posts() ) : $loop->the_post(); get_template_part( 'template-parts/content-kollektion-modal', get_post_format() ); endwhile; endif; wp_reset_postdata(); ?> </section> </div> 

content-kollektion-modal.php :

 <div id="post-modal<?php the_ID(); ?>"> <div> <a href="#close" title="Close" class="close">X</a> <h2>Modal Box</h2> <img src="<?php the_field('image_collection'); ?>" /> </div> </div> 

Solutions Collecting From Web of "Запрос типа персонализированного сообщения дважды на одной странице"

Вы можете запросить много времени на одной странице, и весь выполняемый вами запрос будет работать идеально независимо от выбранного вами типа сообщений.

Примечание. После того, как вы закончите Wp_Query в первый раз, вам нужно reset Wp_Query после выполнения кода.

 wp_reset_query(); // This will reset all the global variables to "". 

wp_reset_query() восстанавливает $ wp_query и данные глобальной записи в исходный основной запрос. Эта функция должна вызываться после query_posts (), если вы должны использовать эту функцию. Как отмечено в приведенных ниже примерах, настоятельно рекомендуется использовать фильтр pre_get_posts для изменения параметров запроса до того, как запрос будет выполнен.

Не только этим методом вы можете сбросить Wp_Query есть другие методы, которые вы можете отслеживать для сброса post data а также $args .

Краткий справочник О параметрах «Сбросить параметры запроса».

  1. wp_reset_query() – лучше всего использовать после цикла query_posts для сброса пользовательского запроса
  2. wp_reset_postdata() – лучше всего использовать после пользовательских или нескольких циклов, созданных с помощью WP_Query
  3. rewind_posts() – лучше для повторного использования одного и того же запроса на той же странице.

Я надеюсь, что это полезный обзор того, когда и как сбросить / перемотать цикл WordPress

wp_reset_postdata ()

 $random_post = new WP_query(); $random_post->query('cat=3&showposts=1&orderby=rand'); while ($random_post->have_posts()) : $random_post->the_post(); <a href="<?php the_permalink() ?>" title="<?php the_title(); ?>"> <img src="<?php echo get_post_meta($random_post->ID, 'featured', true); ?>"> </a> endwhile; wp_reset_postdata(); 

Когда использовать: лучше всего использовать после пользовательских или нескольких циклов, созданных с помощью WP_Query.

wp_reset_query ()

 <?php query_posts('posts_per_page=3'); if (have_posts()) : while (have_posts()) : the_post(); ?> <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1> <?php endwhile; endif; ?> <?php wp_reset_query(); ?> 

Когда использовать: лучше всего использовать после цикла query_posts для сброса настроек после пользовательского запроса.

rewind_posts ()

 if (have_posts()) : while (have_posts()) : the_post(); ?> <h1><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h1> <?php endwhile; endif; ?> <?php rewind_posts(); ?> <?php while (have_posts()) : the_post(); ?> <?php the_content(); ?> <?php endwhile; ?> 

Итак, в то время как wp_reset_query и wp_reset_postdata сбрасывают весь объект запроса, rewind_posts просто сбрасывает счетчик сообщений, как видно из функции в файле wp-includes/query.php :

 // rewind the posts and reset post index function rewind_posts() { $this->current_post = -1; if ( $this->post_count > 0 ) { $this->post = $this->posts[0]; } } 

Когда использовать: лучше всего использовать один и тот же запрос на той же странице.

больше, чем просто сброс почтовых данных, я бы сбросил весь запрос:

  wp_reset_query(); // Restore global post data stomped by the_post(). 

добавьте эту строку ниже сброса данных после публикации (или замените после этого сброс данных)

Я не верю, что вам понадобятся сообщения перемотки.

@Michael Уже упоминал об этом в своем комментарии, который вы читали об использовании rewind_posts () с пользовательским запросом? Если вы не читаете сами и пытаетесь выяснить.

В любом случае вы ошиблись в rewind_posts() , потому что вы использовали пользовательский запрос. Так что используйте вот так.

 <?php // rewind_posts(); // /* Start the Loop */ // $args = array( 'post_type' => 'kollektion' ); // $loop = new WP_Query( $args ); $loop->rewind_posts(); if( $loop ->have_posts() ) : while( $loop->have_posts() ) : $loop->the_post(); get_template_part( 'template-parts/content-kollektion-modal', get_post_format() ); endwhile; endif; ?> 

Но это не единственный способ запроса CPT, умножающего одну страницу. Сначала вы видите wp_reset_postdata () или wp_reset_query () после пользовательского цикла?

Вам просто нужно восстановить глобальную переменную $ post основного цикла запроса после вторичного цикла запроса, используя новый WP_Query, используя wp_reset_postdata () .

 /* Start the Loop */ $args = array( 'post_type' => 'kollektion' ); $loop = new WP_Query( $args ); if( $loop ->have_posts() ) : while( $loop->have_posts() ) : $loop->the_post(); get_template_part( 'template-parts/content-kollektion', get_post_format() ); endwhile; wp_reset_postdata(); endif; 

Замените этот цикл вашего цикла, и он выполнит трюк.

Включите WP_DEBUG на свой сайт WordPress, прежде чем что-то сделать. это поможет вам на всем пути