2012-07-11 74 views
1

为WordPress的脑袋有一个快速的问题...WordPress的分页的简码

Ive得到了目前进口的所有帖子从某一个岗位类型简码。然而,我无法将分页添加到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'); 

感谢您的提问!

回答

-1

你需要添加全球$分页,然后你的数组被传递给WP_Query你需要添加“分页” => $分页

您的查询应该这样。

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

可惜,这似乎并没有改变任何东西中调用它。它并不是分页不起作用......当我输入url和“/ page/2”时,它显示下一组帖子,但get_next_posts_link和上一个链接似乎没有任何东西。 – Aaron 2012-07-12 09:09:31

0

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

此外,您还可能有更多的运气与此有关http://wordpress.stackexchange.com

+0

感谢道尔顿,试着移动重置功能,这没有效果。 我已转贴此http://wordpress.stackexchange.com/questions/58880/shortcode-displaying-custom-post-types 感谢您的帮助。 – Aaron 2012-07-18 14:15:01

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()之前和函数使用

$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 
));