Intereting Posts

Pagination всегда добавляет ссылку «Next», когда результаты приходят из Custom Post Type WP_query

Или, по крайней мере, так оно и есть.

У меня есть страница, на которую я передаю несколько аргументов для запроса post_meta для настраиваемого поля, и я всегда получаю дополнительную ссылку «Далее» независимо от количества сообщений. Если запрос одного типа сообщений без передачи каких-либо переменных в meta_query (установка $ female в null) в моем WP_query, разбиение на страницы работает так, как ожидалось.

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

URL:

http://dev.huntingtonmedical.com/doctors/page/7/ http://dev.huntingtonmedical.com/doctors/page/5/?gender=female (следующая ссылка приведет вас к пустой странице)

get_header(); $gender = $_GET['gender']; if ( $gender != 'female' ) unset( $gender ); global $paged; $paged = ( get_query_var('paged') ) ? get_query_var( 'paged' ) : 1; $args = array( 'post_type' => 'doctors', 'meta_key' => 'last_name', 'orderby' => 'meta_value', 'order' => 'ASC', 'paged' => $paged, 'meta_query' => array( array( 'key' => 'gender', 'value' => $gender, 'compare' => 'IN' ), ) ); $query = new WP_Query( $args ); while( $query->have_posts() ) { $query->the_post(); the_title(); echo '<br>'; } posts_nav_link(' | ',' Previous Page ',' Next Page '); 

Solutions Collecting From Web of "Pagination всегда добавляет ссылку «Next», когда результаты приходят из Custom Post Type WP_query"

/doctors/ – это архив типа post, поэтому мы можем проверить, выполняется ли этот запрос в действии pre_get_posts через условный тег is_post_type_archive( 'doctors' ) и соответствующим образом модифицировать эти запросы.

WordPress передает объект запроса в функцию по ссылке ( $query в этом примере), поэтому мы можем модифицировать вазы запросов с помощью метода set объекта запроса. Этот код будет включен в файл functions.php вашей темы:

 function wpa_doctor_gender( $query ) { // if this is the main query on the doctors post type archive if ( $query->is_post_type_archive( 'doctors' ) && $query->is_main_query() ) { // set query vars for all doctors queries $query->set( 'meta_key', 'last_name' ); $query->set( 'orderby', 'meta_value' ); $query->set( 'order', 'ASC' ); // set meta_query if gender is female if ( isset( $_GET['gender'] ) && 'female' == $_GET['gender'] ){ $meta_query = array( array( 'key' => 'gender', 'value' => $_GET['gender'], 'compare' => 'IN' ) ) $query->set( 'meta_query', $meta_query ); } } } add_action( 'pre_get_posts', 'wpa_doctor_gender' ); 

Теперь в шаблоне мы можем избавиться от всего пользовательского кода запроса и цикла и просто запустить цикл vanilla для вывода сообщений:

 while( have_posts() ) { the_post(); the_title(); // etc.. }