У меня есть страница под названием News (с использованием page template page-newslist.php
), которая должна отображать сообщения из настраиваемого типа сообщений, также называемого News. Я понимаю, что наличие одинакового имени вызывает проблемы, поэтому при регистрации настраиваемого типа сообщений у меня есть переписывание, чтобы отличить его от страницы:
'rewrite' => array('slug' => 'news-article', 'with_front' => true),
Я могу заставить запрос работать и отображать сообщения должным образом, но после всех статей и сообщений, которые я прочитал, я не могу заставить разбиение на страницы работать. Ничего не появляется для разбивки на страницы.
После успеха с использованием запроса шаблона страницы я попробовал метод archive-news.php
, где он автоматически отображал сообщения из настраиваемого типа сообщений. Там отображается разбиение на страницы. Недостаток использования этого метода заключается в том, что для его привязки нет «физической» страницы (в которой также были бы настраиваемые поля, способность быть красиво добавлена (не жестко закодирована) в меню и т. Д.),
Вот урезанный код, регистрирующий пользовательский тип сообщения:
register_post_type('news', array( 'label' => 'News', 'capability_type' => 'post', 'hierarchical' => false, 'rewrite' => array('slug' => 'news-article', 'with_front' => true), 'query_var' => true, 'has_archive' => true, ));
А затем код для шаблона страницы:
$paged = 1; if ( get_query_var('paged') ) $paged = get_query_var('paged'); if ( get_query_var('page') ) $paged = get_query_var('page'); $args = array( 'post_type' => 'news', 'post_status' => 'publish', 'posts_per_page' => 1, 'paged' => $paged ); $my_query = null; $my_query = new WP_Query($args); if($my_query->have_posts()): while ($my_query->have_posts()) : $my_query->the_post(); ... endwhile; endif; wp_reset_query(); // Attempt method 1 posts_nav_link(' — ', __('« Newer Posts'), __('Older Posts »')); // Attempt method 2 previous_posts_link('« Newer'); next_posts_link('Older »');
Какие-нибудь идеи, что не так?
Взгляните на страницу ссылки на следующую страницу, здесь поможет пример. codex.wordpress.org/Template_Tags/next_posts_link
<?php next_posts_link('Older Entries »', 0); ?>
Пример WordPress codex.
<?php // set the "paged" parameter (use 'page' if the query is on a static front page) $paged = ( get_query_var( 'paged' ) ) ? get_query_var( 'paged' ) : 1; // the query $the_query = new WP_Query( 'cat=1&paged=' . $paged ); ?> <?php if ( $the_query->have_posts() ) : ?> <?php // the loop while ( $the_query->have_posts() ) : $the_query->the_post(); ?> <?php the_title(); ?> <?php endwhile; ?> <?php // next_posts_link() usage with max_num_pages next_posts_link( 'Older Entries', $the_query->max_num_pages ); previous_posts_link( 'Newer Entries' ); ?> <?php // clean up after our query wp_reset_postdata(); ?> <?php else: ?> <p><?php _e( 'Sorry, no posts matched your criteria.' ); ?></p> <?php endif; ?>
Pagination Like: Предыдущая 1 2 3 Следующая
<?php $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; $news= new WP_Query(array( 'post_type'=>'post', 'posts_per_page' => 3, 'paged' => $paged, )); if($news->have_posts()) : while($news->have_posts()) : $news->the_post(); the_title(); endwhile; $total_pages = $news->max_num_pages; if ($total_pages > 1){ $current_page = max(1, get_query_var('paged')); echo paginate_links(array( 'base' => get_pagenum_link(1) . '%_%', 'format' => '/page/%#%', 'current' => $current_page, 'total' => $total_pages, 'prev_text' => __('« prev'), 'next_text' => __('next »'), )); } ?> <?php else :?> <h3><?php _e('404 Error: Not Found', ''); ?></h3> <?php endif; ?> <?php wp_reset_postdata();?>