Intereting Posts
Дата не отображается в пользовательском запросе Как умножить сообщение для проверки результатов внутреннего поиска? Расширение WP_Widget вызывает ошибку при использовании виджета Monster Текст электронной почты WooCommerce, основанный на категории && shipping zone && метод оплаты Непрерывные ссылки WordPress не работают (странный способ) Как я могу перечислить следующие 7 дней и любые события (cpt), содержащиеся в эти дни удалить дубликаты комментариев Вставить нового пользователя в форму submit 'init' hook Будет ли уменьшать разрешения mysql, препятствуя функции WP? Каково имя параметра в настройке для флажка «Отобразить заголовок сайта и теглайн»? Внезапное неожиданное изменение имени пользователя и пароля администратора как добавить активный класс в плейлист, и сделать css для него the_content не работает Получить главную родительскую категорию Действие: отредактировать настраиваемый тип сообщения?

Как получить все сообщения автора за пределами шаблонов авторов

В настоящее время я пытаюсь отобразить все сообщения от автора (ex admin) на пользовательской странице с именем, которое полностью отличается от указанного здесь файла шаблона.

Поэтому внутри этой страницы я использую WP-запрос для получения сообщений от администратора следующим образом:

$args = array( 'post_type' => 'post', 'posts_per_page' => 10, 'post_status' => 'publish', 'author_name' => 'admin' ); $author_query = new WP_Query( $args ); 

Он работает нормально с 10 полученными сообщениями, но проблема max_num_pages с разбиением на страницы, так как я не могу получить правильные max_num_pages внутри моей функции разбиения на страницы:

 global $wp_query; echo $pages = $wp_query->max_num_pages; // Always return 0 

Когда я делаю print_r($wp_query); он всегда показывает [max_num_pages] => 0 и [found_posts] => 1 где, когда тот же самый код в author.php дал мне [max_num_pages] => 1 и [found_posts] => 5 .

Так что мне нужно передать любые другие конкретные параметры в запрос WP или любой другой способ преодолеть эту проблему?

Solutions Collecting From Web of "Как получить все сообщения автора за пределами шаблонов авторов"

Из информации, которую вы указали в своем сообщении, я считаю, что вы используете собственный шаблон page.php здесь

Вот причины, по которым вы получаете результат:

Основной запрос выполняется на каждой загружаемой странице. Основной запрос очень специфичен для каждого типа шаблона. $wp_query – супер глобальный, используемый основным запросом

Чтобы проверить, насколько уникален основной запрос для всех конкретных шаблонов, добавьте print_r($wp_query); на все архивные страницы (archive.php, category.php, author.php и т. д.), index.php и page.php. Как вы можете видеть, результаты для каждого экземпляра совершенно разные. Чтобы понять, как это работает, вам нужно прочитать Обзор запросов в кодексе

ОК, чтобы вернуться, причина, по которой вы получаете конкретный результат при использовании $wp_query , отображает информацию из основного запроса для страницы, а не информацию из вашего пользовательского запроса.

Чтобы получить информацию из вашего пользовательского запроса, вам нужно print_r(VARIABLE USED FOR new WP_Query); , в вашем случае print_r($author_query) .

Чтобы получить разбиение на страницы, чтобы работать с вашим пользовательским запросом, у вас есть аргумент paged для ваших аргументов. Кроме того, при использовании next_posts_link() вы должны указать параметр $max_pages

Вот рабочий пример из кода. Измените, если необходимо, чтобы указать свои аргументы и т. Д.

 <?php // set the "paged" parameter (use 'page' if the query is on a static front page) $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // the query $args = array( 'post_type' => 'post', 'posts_per_page' => 10, 'post_status' => 'publish', 'author_name' => 'admin' 'paged' => $paged ); $author_query = new WP_Query( $args ); ?> <?php if ( $author_query->have_posts() ) : ?> <?php // the loop while ( $author_query->have_posts() ) : $author_query->the_post(); ?> <?php the_title(); ?> <?php endwhile; ?> <?php // next_posts_link() usage with max_num_pages next_posts_link( 'Older Entries', $author_query->max_num_pages ); previous_posts_link( 'Newer Entries' ); ?> <?php // clean up after the query and pagination wp_reset_postdata(); ?> <?php else: ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; ?> 

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

Этот пост может также поделиться еще большим количеством света по основному запросу и тому, как он работает

EDIT 2

Я обновил код, чтобы показать ваш конкретный вопрос. Надеюсь, это полезно

Поскольку глобальный $wp_query представляет запрос для текущей страницы (основной запрос) и полностью отделен от вашего пользовательского $author_query .

Если вы хотите использовать функции разбиения на страницы, вы можете «подделать», временно установив $wp_query в свой пользовательский запрос и затем снова сбросив его:

 global $wp_query, $wp_the_query; $wp_query = $author_query; // Pagination functions $wp_query = $wp_the_query; 

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

 <?php // fix pagination issue if ( get_query_var('paged') ) { $paged = get_query_var('paged'); } elseif ( get_query_var('page') ) { $paged = get_query_var('page'); } else { $paged = 1; } $args = array( 'post_type' => 'post', 'posts_per_page' => '10', 'author_name' => 'admin', 'ignore_sticky_posts' => 1, 'paged' => $paged ); $my_query = new WP_Query( $args ); if ( $my_query->have_posts() ) : while ( $my_query->have_posts() ) : $my_query->the_post(); get_template_part( 'content', get_post_format() ); endwhile; twentytwelve_content_nav( 'nav-below' ); else : get_template_part( 'content', 'none' ); endif; wp_reset_postdata(); ?> 

В этом коде я предполагаю, что вы используете функцию twotwelve_content_nav () для создания prev, следующих ссылок. Хотя вы можете изменить его, чтобы заменить свой код.