分页不适用于word press自定义帖子。我已经尝试了下面的代码,但是没有显示分页。已尝试不同的查询,但没有结果。我是新手在php和word出版社。我只是复制和过去的代码。有谁能帮帮我吗?到目前为止,我所做的工作如下。
在function.php中
/*pagination*/
function wpbeginner_numeric_posts_nav() {
if( is_singular() )
return;
global $wp_query;
/** Stop execution if there's only 1 page */
if( $wp_query->max_num_pages <= 1 )
return;
$paged = get_query_var( 'paged' ) ? absint( get_query_var( 'paged' ) ) : 1;
$max = intval( $wp_query->max_num_pages );
/** Add current page to the array */
if ( $paged >= 1 )
$links[] = $paged;
/** Add the pages around the current page to the array */
if ( $paged >= 3 ) {
$links[] = $paged - 1;
$links[] = $paged - 2;
}
if ( ( $paged + 2 ) <= $max ) {
$links[] = $paged + 2;
$links[] = $paged + 1;
}
echo '<div class="navigation"><ul>' . "\n";
/** Previous Post Link */
if ( get_previous_posts_link() )
printf( '<li>%s</li>' . "\n", get_previous_posts_link() );
/** Link to first page, plus ellipses if necessary */
if ( ! in_array( 1, $links ) ) {
$class = 1 == $paged ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( 1 ) ), '1' );
if ( ! in_array( 2, $links ) )
echo '<li>…</li>';
}
/** Link to current page, plus 2 pages in either direction if necessary */
sort( $links );
foreach ( (array) $links as $link ) {
$class = $paged == $link ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $link ) ), $link );
}
/** Link to last page, plus ellipses if necessary */
if ( ! in_array( $max, $links ) ) {
if ( ! in_array( $max - 1, $links ) )
echo '<li>…</li>' . "\n";
$class = $paged == $max ? ' class="active"' : '';
printf( '<li%s><a href="%s">%s</a></li>' . "\n", $class, esc_url( get_pagenum_link( $max ) ), $max );
}
/** Next Post Link */
if ( get_next_posts_link() )
printf( '<li>%s</li>' . "\n", get_next_posts_link() );
echo '</ul></div>' . "\n";
}
在自定义post查询中
<?php
global $post;
$args = array( 'posts_per_page' => 5, 'post_type'=> 'latestnews');
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post);
?>
<div class="page_news">
<div class="single_page_news">
<h2><?php the_title(); ?><h2>
<p><?php the_content(); ?></p>
</div>
</div>
<?php endforeach; ?>
<?php wpbeginner_numeric_posts_nav(); ?>
请帮帮我
发布于 2014-08-21 11:52:21
使用这些代码
$paged = ( get_query_var('page') ) ? get_query_var('page') :1;
$query = new WP_Query( array( 'posts_per_page' => 1,'paged' => $paged,'post_type' => 'achievements','orderby' => 'date', 'order' => 'ASC' ) );
while ( $query->have_posts() ) : $query->the_post();
endwhile;
而不是
$args = array( 'posts_per_page' => 5, 'post_type'=> 'latestnews');
$myposts = get_posts( $args );
点击此链接http://thenetapp.com/2014/01/how-to-list-wordpress-posts-with-pagination/
发布于 2014-08-21 12:25:01
您的分页功能仅为缺省的主查询设置,而不是为自定义查询设置。
另外,不要对分页查询使用get_posts
。它是一个用于自定义查询的很好的函数,但是一旦你需要分页,使用它就变得很糟糕。
而不是使用WP_Query
进行分页查询,它更容易使用。
示例:
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
$args = array(
'posts_per_page' => 1,
'paged' => $paged,
'post_type' => 'YOUR POST TYPE'
);
$q = new WP_Query($args);
if($q->have_post()) {
while($q->have_posts()) {
$q->the_post();
//YOUR LOOP
}
//YOUR PAGINATION
}
wp_reset_postdata();
您可以在codex中查看额外的参数。
现在,您需要将分页函数中的每个$wp_query
实例都更改为$q
,这样它才能正常工作。
需要注意的是,您不必调用全局$post
编辑
在您的评论中,有一种更简单的方法来实现您的目标,而无需任何自定义查询
此页面是一个存档页面,用于显示您的自定义帖子类型latestnews
。您可以简单地将您的archive-custom.php
重命名为archive-latestnews.php
。请参阅Template Hierarchy。只需确保在注册帖子类型时将has_archive
设置为true
您也不应该在任何类型的归档页面上购买自定义查询的主查询。正如你所看到的,它总是很麻烦。因此,请删除自定义查询并将其替换为默认查询
这就是您在归档页面中应该拥有的所有内容
if(have_post()) {
while(have_posts()) {
the_post();
//YOUR LOOP
}
//YOUR PAGINATION
}
只需再次将所有$q
实例改回$wp_query
即可。那么一切都应该正常了。
要获得更多信息,请查看我在WPSE上做过的this post
https://stackoverflow.com/questions/25425260
复制相似问题