短代码中的Wordpress分页

时间:2012-07-11 10:13:33

标签: wordpress custom-post-type

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 &raquo;' . '</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">&larr;</span> Older posts', 'stratford_wp' ) ) . '</div>'
    . '<div class="nav-next">' . previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'stratford_wp' ) ) . '</div>'
    . '</div>';
}
add_shortcode( 'feed', 'section_feed_shortcode' );

感谢先进的答案!

3 个答案:

答案 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()函数进一步向下移动会发生什么?

另外,您可能会在http://wordpress.stackexchange.com

上获得更多好运

答案 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  ) );