2016-10-18 2 views
0

Так что я использую WordPress с подчеркивающей темой. Я использовал код из двадцати четырнадцатой темы с разбивкой на страницы.Wordpress Multiple Post Type Loop показывает одинаковые результаты на каждой странице

if (! function_exists('public_notices_paging_nav')) : 
function public_notices_paging_nav() { 

global $wp_query, $wp_rewrite; 

// Don't print empty markup if there's only one page. 
if ($wp_query->max_num_pages < 2) { 
    echo ("<h4 class='one-page-results'>End of Results</h4>"); 
    return; 
} 

$paged  = get_query_var('paged') ? intval(get_query_var('paged')) : 1; 
$pagenum_link = html_entity_decode(get_pagenum_link()); 
$query_args = array(); 
$url_parts = explode('?', $pagenum_link); 

if (isset($url_parts[1])) { 
    wp_parse_str($url_parts[1], $query_args); 
} 

$pagenum_link = remove_query_arg(array_keys($query_args), $pagenum_link); 
$pagenum_link = trailingslashit($pagenum_link) . '%_%'; 

$format = $wp_rewrite->using_index_permalinks() && ! strpos($pagenum_link, 'index.php') ? 'index.php/' : ''; 
$format .= $wp_rewrite->using_permalinks() ? user_trailingslashit($wp_rewrite->pagination_base . '/%#%', 'paged') : '?paged=%#%'; 

// Set up paginated links. 
$links = paginate_links(array(
    'base'  => $pagenum_link, 
    'format' => $format, 
    'total' => $wp_query->max_num_pages, 
    'current' => $paged, 
    'mid_size' => 1, 
    'add_args' => array_map('urlencode', $query_args), 
    'prev_text' => __('&larr; Previous', 'public_notices'), 
    'next_text' => __('Next &rarr;', 'public_notices'), 
    'type'  => 'list', 
)); 

if ($links) : 

?> 

<nav class="navigation paging-navigation" role="navigation"> 
    <h1 class="screen-reader-text"><?php _e('Posts navigation', 'public_notices'); ?></h1> 
    <?php echo $links; ?> 
</nav><!-- .navigation --> 
<?php 
endif; 
}endif; 

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

<?php 
     $postLoop = array(
     'post_type' => array('public_notice_post', 'post'), 
      'orderby' => 'date', 
      'order' => 'DESC' 
    ); 
    $query = new WP_Query($postLoop); 
       if ($query->have_posts()) : 
        while ($query->have_posts()) : $query->the_post(); 
        get_template_part('template-parts/content', get_post_format()); 
       endwhile; 

       public_notices_paging_nav(); 

       endif; 

    wp_reset_query(); ?> 

Все, что угодно. Я много пробовал.

ответ

0

Чтобы исправить исходную проблему дублированных сообщений на каждой странице, мне нужно было написать мой код, как это. ОДНАКО У меня все еще проблема с количеством страниц, но это будет рассмотрено в другом месте.

 <?php 
     $page = get_query_var('paged') ? get_query_var('paged') : 1; 

     $ppp = get_option('posts_per_page');  

     if ($page == 1) 
      $offset = 6; 
     else 
      $offset = 6 + ($page - 1) * $ppp; 
    ?> 
    <?php 
     $postLoop = array(
      'post_type' => array('public_notice_post', 'post'), 
      'orderby' => 'date', 
      'order' => 'DESC', 
      'paged' => $paged, 
      'posts_per_page'=> $ppp, 
      'offset' => $offset 
    ); 

      $wp_query = new WP_Query($postLoop); 
       if ($wp_query->have_posts()) : 
        while ($wp_query->have_posts()) : the_post(); 
        get_template_part('template-parts/content', get_post_format()); 
       endwhile; 

       public_notices_paging_nav(); 

       endif; 


    wp_reset_query(); ?> 
0

Возможно, у вас есть петля без «wp_reset_query()», и это может вызвать некоторые ошибки в другом цикле. Просто посмотрите весь свой цикл, чтобы убедиться, что нет ни одного запроса на сброс.

На какой странице вы закодировали этот цикл? Это настраиваемый шаблон или другой?

Извините за мой английский, им французский.