分页不适用于word press custom post。 我在下面尝试过这些代码,但分页并没有出现。 尝试了不同的查询但没有结果。 我是新的php和word press.i只是复制和过去的代码。 谁能帮帮我吗? 到目前为止我所做的事情都在下面。
在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";
}
自定义帖子查询中的
<?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(); ?>
请帮帮我
答案 0 :(得分:0)
使用这些代码
$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/
答案 1 :(得分:0)
您的分页功能仅针对默认主查询设置,而不是针对自定义查询设置。
另外,请勿使用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