Intereting Posts
Взволнованный У меня есть фанки .htaccess для сайта WP в свете странного поведения в поисковых системах как выполнять персонализированные групповые действия для WP_List_Table (основной класс) Переадресовывать зарегистрированных пользователей, если они находятся на определенной странице Перенаправление после редактирования длинных статей Ивритские персонажи испортились Как выровнять по центру меню в 20-ти десятимесячной теме WordPress? Резервный кэш пользователя Запрос с использованием запроса WP с использованием цены мета-ключа Разметка заголовка виджетов в register_sidebar wp_get_attachment_image_src возвращает неверный URL-адрес на многоузловом Как перезаписывается URL-адрес W3 Total Cache CDN? meta_query сортировка по 2 клавишам Просмотр комментариев на страницах, отличающихся идентификаторами GET Как термины связаны с сообщениями в базе данных? Запросить разрешение пользователя при активации плагина

Что не так с этим кодом страницы?

Я пытаюсь использовать новый подход к сообщениям paginate, возвращаемым в файле category.php. Я хочу видеть фрагменты из 10 сообщений за раз. Имя файла – category-xyz.php, и это сработало до того, как я изменил этот метод, хотя я использовал showposts = 200, и он возвращал все 180 сообщений в этой категории.

Я изменил метод, потому что несколько вызовов, которые я использовал, были устаревшими (например, showposts) или не рекомендованными. Я использую решение этого сообщения для справки:

Как исправить разбиение на страницы для пользовательских циклов?

Вот мой код:

<?php // Define custom query parameters $custom_query_args = array( 'cat' => 76, 'posts_per_page' => 5 ); // Get current page and append to custom query parameters array $custom_query_args['paged'] = get_query_var( 'paged' ) ? get_query_var( 'paged' ) : 1; // Instantiate custom query $custom_query = new WP_Query( $custom_query_args ); // Pagination fix $temp_query = $wp_query; $wp_query = NULL; $wp_query = $custom_query; // Output custom query loop rather than use wp_query if ( $custom_query->have_posts() ) : while ( $custom_query->have_posts() ) : $custom_query->the_post(); // Loop output goes here ?> <div class="pcrmbimgholder"> <a href="<?php the_permalink() ?>" rel="bookmark"><img src="<?php echo pcrmbimagegrab() ?>" alt="<?php the_title(); ?>" /></a> </div> <h2><a href="<?php the_permalink() ?>" rel="bookmark"><?php the_title(); ?></a></h2> <?php the_content_limit(190, ""); ?> <?php $customField = get_post_custom_values("price"); if (isset($customField[0])) { echo "<strong>Price: ".$customField[0]; echo " </strong>"; } else { ; } ?> <?php $customField = get_post_custom_values("sku"); if (isset($customField[0])) { echo "| Stock Reference: ".$customField[0] . "   "; } else { ; } ?> <a class="postbutton" href="<?php the_permalink() ?>" rel="bookmark"><span>View</span></a><div class="separator"></div> <?php endwhile; endif; // Reset postdata wp_reset_postdata(); // Custom query loop pagination previous_posts_link( 'Older Posts' ); next_posts_link( 'Newer Posts', $custom_query->max_num_pages ); // Reset main query object $wp_query = NULL; $wp_query = $temp_query; ?> 

Я также пробовал это, потому что я не уверен, какие параметры мне нужны в настраиваемом массиве запросов:

 // Define custom query parameters $custom_query_args = array( 'cat' => 76, 'posts_per_page' => 5, 'max_num_pages' => 20, 'paged' => $paged, ); 

Ссылка на страницу разбивается на категории / category / category-name / page / 2 /, что приводит к ошибке 404. Любые идеи почему?

Основной запрос выполняется до загрузки шаблона, и WordPress решает, какой шаблон загружать на основе результатов этого запроса.

Вы говорите, что ваша default posts_per_page установлена ​​в 200, и в этой категории 180 сообщений, поэтому, насколько известно WordPress, нет страницы 2 . Пользовательский запрос, который вы запускаете в шаблоне с разными настройками сообщений на странице, не связан с основным запросом.

Решение состоит в том, чтобы внести коррективы в основной запрос перед загрузкой шаблона с помощью действия pre_get_posts . Это будет в файле functions.php вашей темы:

 function category_posts_per_page( $query ) { if ( !is_admin() && $query->is_category() && $query->is_main_query() ) { $query->set( 'posts_per_page', 5 ); } } add_action( 'pre_get_posts', 'category_posts_per_page' ); 

Затем вы можете запустить обычный цикл в шаблоне, а разбиение на страницы будет работать, как ожидалось. Также см. is_category() в Codex, если вы хотите, чтобы это применимо к определенной отдельной категории.