5

一个关于 Wordpress 大脑的快速问题......

我有一个简码,它目前从某个帖子类型导入所有帖子。但是我无法将分页添加到 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' );

感谢您的高级答案!

4

3 回答 3

5

今天遇到了这个问题并得到了解决方案:

global $paged
$q = new WP_Query(  array ( 'posts_per_page' => $limit, 'post_type' => $type, order => 'ASC', orderby =>'menu_order', 'paged' => $paged  ) );

然后您必须更改paginate_links自定义帖子的查询。请参阅wp 法典示例。更好的是,您可以添加一个函数并wp_reset_query()在函数使用之前和内部调用它

$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
 ) );
于 2014-03-10T22:28:30.370 回答
0

在访问下一个/上一个链接之前,您正在重置您的查询。如果将 wp_reset_query() 函数进一步向下移动会发生什么?

此外,您可能会在http://wordpress.stackexchange.com上获得更多运气

于 2012-07-18T13:24:53.690 回答
-1

您需要添加全局 $paged ,然后在传递给 WP_Query 的数组中添加 'paged' => $paged

您的查询应该是这样的。

global $paged
$q = new WP_Query(  array ( 'posts_per_page' => $limit, 'post_type' => $type, order => 'ASC', orderby =>'menu_order', 'paged' => $paged  ) );
于 2012-07-11T14:31:50.393 回答