Intereting Posts
Можно ли предварительно определить набор атрибутов по категориям? как сделать дополнительные параметры цвета добавлены в цветной настройщик по умолчанию сохранить их значение Как добавить фильтр в функцию get_body_class? Манипулирование панелями и полями для настройки? как создать многоязычную пользовательскую страницу в WordPress Почему мой контент исчезает, когда я делаю страницу в соответствии с именем архива? Добавлено 20 пользовательских полей. Только 10 показов в раскрывающемся списке Создать индивидуальный идентификатор одиночной страницы. Показать последние комментарии с gravatar и выдержки? Настройка комментариев разбиения на страницы для загрузки Получить выбранный термин в раскрывающемся списке Сохраняются ли пользовательские типы сообщений при изменении темы? Редактирование нескольких пользовательских типов сообщений при сохранении нового или отредактированного сообщения Размещение div или img между массивом post с использованием WP Query Почему style.css с? Ver = 3.9.2 не обновляется как один без? Ver = 3.9.2?

перенаправление постраничной страницы с URL-адреса страницы перед запросом страницы

У меня есть CPT, называемый персоналом. На их страницах single-staff.php у меня есть список предметов, с которыми они связаны. Это стало слишком долго, поэтому теперь мы хотим разбивать на страницы. Я могу правильно создать ссылки на страницы, но перенаправляет себя на URL-адрес без / page / number.

http://wonkhedev.jynk.net/staff/mark-leach/ главная страница

http://wonkhedev.jynk.net/staff/mark-leach/page/2/ стр. 2, но направляется обратно на http://wonkhedev.jynk.net/staff/mark-leach/

//in functions.php function get_author_articles($id){ // backwards finds CPT 'blogs' this staff member is related to. $meta_query = array( 'paged' => get_query_var('paged'), 'post_type' => 'blogs', 'meta_query' => array( array( 'key' => 'blog_author', // name of custom field, ACF 'value' => '"' . $id . '"', // CPT 'staff' id. 'compare' => 'LIKE' ) ), 'posts_per_page' => 20, ); $author_articles = query_posts($meta_query); return $author_articles; } 

// в single-staff.php

 $blog_articles = get_author_articles($post->ID); $blog_articles_total = $wp_query->found_posts; <?php if ($wp_query->max_num_pages > 1) : ?> <nav class="post-nav"> <ul class="pager"> <li class="previous"><?php next_posts_link(__('&larr; Older Articles', 'roots')); ?></li> <li class="next"><?php previous_posts_link(__('Newer Articles &rarr;', 'roots')); ?></li> </ul> </nav> <?php endif; ?> 

Вы никогда не должны использовать query_post поскольку он разбивает основной объект запроса и сбрасывает его на текущий пользовательский запрос. Это нарушает плагины и пользовательские функции, например, связанные сообщения и разбиение на страницы. Я сделал большой ответ на это, так что не забудьте проверить его, а также ответ от @ Rarst .

Следует также отметить page страницы, так же, как статические передние страницы используют page и не paged как обычные архивные страницы, а страницы

Давайте сначала посмотрим на вашу связанную должность:

ПОХОЖИЕ СООБЩЕНИЯ

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

Всего несколько заметок, прежде чем мы это сделаем:

  • Код прокомментирован, поэтому будет легко следовать

  • Для этого кода требуется PHP 5.4 +

  • Измените код при необходимости.

Вот код

 /** * Function to return realted posts_per_page * * @param (array) $args Compatible argumnets to pass to WP_Query * @return $author_articles */ function get_author_articles( $args = [] ) { // First make sure we are on a single page, else return false if ( !is_single() ) return false; // Get the single post object we are on $current_post = get_queried_object(); // Set our $page variable $page = get_query_var( 'page' ) ? get_query_var( 'page' ) : 0; // backwards finds CPT 'blogs' this staff member is related to. $meta_query_defaults = [ 'post__not_in' => $current_post->ID, // Excludes the current post 'paged' => $page, 'post_type' => $current_post->post_type, 'posts_per_page' => 20, 'meta_query' => [ [ 'key' => 'blog_author', // name of custom field, ACF 'value' => $current_post->ID, // CPT 'staff' id. 'compare' => 'LIKE' ] ], ]; // Add our custom arguments to the $meta_query_defaults array if ( $args && is_array( $args ) ) { $meta_query_defaults = wp_parse_args( $args, $meta_query_defaults ); } $author_articles = new WP_Query( $meta_query_defaults ); return $author_articles; } 

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

PAGINATION

Как я уже говорил, отдельные страницы и статические передние страницы используют page а не paged . Чтобы сделать разбиение на страницы, вам потребуется полная пользовательская функция. Я сделал такую ​​функцию некоторое время назад, которую вы можете проверить здесь .

Вот несколько измененных версий

 function get_single_pagination_link( $pagenum = 1 ) { global $wp_rewrite; if( !is_single() || !$wp_rewrite->permalink_structure ) return false; $pagenum = (int) $pagenum; $post_id = get_queried_object_id(); $request = get_permalink( $post_id ); if ( $pagenum > 1 ) $request = trailingslashit( $request ) . user_trailingslashit( $pagenum ); return esc_url( $request ); } function get_next_single_page_link ( $label = null, $max_page = 0 ) { global $wp_query; if( !is_single() ) return false; if ( !$max_page ) { $max_page = $wp_query->max_num_pages; } $paged = ( get_query_var('page') ) ? get_query_var('page') : 1; $next_page = intval($paged) + 1; if ( null === $label ) { $label = __( 'Next Page &raquo;' ); } if ( ( $next_page <= $max_page ) ) { return '<a href="' . get_single_pagination_link( $next_page ) . '">' . $label . '</a>'; } else { return false; } } function get_previous_single_page_link( $label = null ) { if( !is_single() ) return false; $paged = ( get_query_var('page') ) ? get_query_var('page') : 1; $prev_page = intval($paged) - 1; if ( null === $label ) { $label = __( '&laquo; Previous Page' ); } if ( ( $prev_page > 0 ) ) { return '<a href="' . get_single_pagination_link( $prev_page ) . '">' . $label . '</a>'; } else { return false; } } 

ОСНОВНОЕ ИСПОЛЬЗОВАНИЕ

Теперь вы можете использовать его, как следует

 $q = get_author_articles(); if ( $q->have_posts() ) { while ( $q->have_posts() ) { $q->the_post(); // Add your markup, etc. } echo get_previous_single_page_link(); echo get_next_single_page_link( null , $q->max_num_pages ); wp_reset_postdata(); }