Wordpress Brains的快速问题......
我有一个短代码,目前从某个帖子类型导入所有帖子。但是我在向wp_query添加分页时遇到了麻烦。
为了解释一旦这个代码发挥作用,我在页面上放了[feed type =“attractions”limit =“2”],它根据景点显示了2个帖子,但它没有分页。只是想知道我到底做错了什么......
继承代码! --->
function section_feed_shortcode( $atts ) {
extract( shortcode_atts( array( 'limit' => -1, 'type' => 'post'), $atts ) );
$q = new WP_Query( array ( 'posts_per_page' => $limit, 'post_type' => $type, order => 'ASC', orderby =>'menu_order', 'paged' => get_query_var('page') ) );
$list = ' ';
while ( $q->have_posts() ) { $q->the_post();
$list .= '<article class="listing-view clearfix">'
. '<div class="listing-content">'
. '<h3>' . get_the_title() . '</h3>'
.'<p>' . get_the_excerpt() . '</p>'
. '<a href="' . get_permalink() . '">' . 'View »' . '</a>'
. '</div>'
. '<a class="listing-thumb" href="' . get_permalink() . '">' . get_the_post_thumbnail($page->ID, 'listing-thumb') . '<span></span></a>'
. '</article>';
}
wp_reset_query();
return
'<div class="listings clearfix">'
. $list
. '<div class="nav-previous">' . next_posts_link( __( '<span class="meta-nav">←</span> Older posts', 'stratford_wp' ) ) . '</div>'
. '<div class="nav-next">' . previous_posts_link( __( 'Newer posts <span class="meta-nav">→</span>', 'stratford_wp' ) ) . '</div>'
. '</div>';
}
add_shortcode( 'feed', 'section_feed_shortcode' );
感谢先进的答案!
答案 0 :(得分:2)
今天遇到了这个问题并得到了解决方案:
global $paged
$q = new WP_Query( array ( 'posts_per_page' => $limit, 'post_type' => $type, order => 'ASC', orderby =>'menu_order', 'paged' => $paged ) );
然后您必须更改自定义帖子的paginate_links
查询。见wp codex示例。更好的是你可以添加一个函数并在wp_reset_query()
之前和函数use
$big = 999999999; // need an unlikely integer
echo paginate_links( array(
'base' => str_replace( $big, '%#%', esc_url( get_pagenum_link( $big ) ) ),
'format' => '?paged=%#%',
'current' => max( 1, get_query_var('paged') ),
'total' => $q->max_num_pages //$q is your custom query
) );
答案 1 :(得分:0)
在进入下一个/上一个链接之前,您正在重置查询。如果将wp_reset_query()函数进一步向下移动会发生什么?
上获得更多好运答案 2 :(得分:-1)
你需要添加全局$ paged然后在你的数组中传递给WP_Query你需要添加'paged'=&gt; $分页
您的查询应该是这样的。
global $paged
$q = new WP_Query( array ( 'posts_per_page' => $limit, 'post_type' => $type, order => 'ASC', orderby =>'menu_order', 'paged' => $paged ) );