2016-02-23 3 views
0

У меня есть пользовательский WP_Query для archive.php. Я исправил вопрос разбивки на страницы, который у меня был, следуя этому замечательному ответу here. И я использую этот ответ от here, чтобы помочь мне найти категорию без определения каждой категории.Wordpress custom wp_query archive страница 2 не найден

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

Когда я использую разбивку на страницы, чтобы перейти на страницу/page/2 /, она говорит: «Страница не найдена». Я думал, что это будет простое обновление постоянной ссылки. Я несколько раз входил в мои настройки постоянной ссылки и повторно сохранил их, но он не исправил проблему, которая не была найдена.

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

<?php 
global $query_string; 

$query_args = explode("&", $query_string); 

// Define custom query parameters 
$archive_query = array(
    'posts_per_page'=> 3 
); 

// Get current page and append to custom query parameters array 
$archive_query['paged'] = get_query_var('paged') ? get_query_var('paged') : 1; 

foreach($query_args as $key => $string) { 
    $query_split = explode("=", $string); 
    $archive_query[$query_split[0]] = urldecode($query_split[1]); 
} // foreach 


// Instantiate custom query 
$query = new WP_Query($archive_query); 

// Pagination fix 
$temp_query = $wp_query; 
$wp_query = NULL; 
$wp_query = $query; 



    // Output custom query loop 
if ($query->have_posts()) : 
    while ($query->have_posts()) : $query->the_post();?> 

     <h1><?php the_title();?></h1>  

    <?php endwhile; 
endif; 
wp_reset_postdata(); 

?> 

<div id="pagination-wrapper"> 
    <?php 
     previous_posts_link('Older Posts' , $query->max_num_pages ); 
     next_posts_link('Newer Posts', $query->max_num_pages); 
    ?> 

</div> 
<?php 
// Reset main query object 
$wp_query = NULL; 
$wp_query = $temp_query; 
?> 

ответ

0

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

Вы можете добавить

function alter_category_posts_per_page($query) { 
    if ($query->is_category() && $query->is_main_query()) { 
     $query->set('posts_per_page', '3'); 
    } 
} 
add_action('pre_get_posts', 'alter_category_posts_per_page'); 

к вашей теме functions.php для достижения этой цели.

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