每种帖子类型限制6个帖子

时间:2014-03-07 22:43:59

标签: php jquery wordpress

我试图确定解决此问题的最佳方法。我创建了一个插件,可以调用三种帖子类型(帖子,事件,新闻),所以在我的插件中我使用单个查询来调用它们

$args = array(
'post_type' => array( 'post', 'tribe_events', 'news_update' ),
'posts_per_page' => 6
);

$news = new WP_Query( $args );

我需要做的是获取每个帖子类型的最新6个帖子以用于jQuery标签。使用posts_per_page arg限制整个查询,这不是我想要的。所以会有四个标签。

All | News | Blog | Events

每个标签只应显示6个帖子。

我必须做些什么选择?任何帮助,将不胜感激。

1 个答案:

答案 0 :(得分:2)

我个人会将它们分成三个独立的查询并使用瞬态来避免重载。我很好奇是否有自定义SQL查询来实现这一点,如果可能的话,我希望别人能给我更多信息。

我的解决方案是:

if ( ! ( $news = get_transient( 'wpse_tab_posts_news' ) ) ) { 
    $news = get_posts( array(
        'post_type' => 'post',
        'posts_per_page' => 6,
        'no_found_rows' => true,
    ) );

    set_transient( 'wpse_tab_posts_news', $news, DAY_IN_SECONDS );
}

对三个查询重复此操作。一个用于新闻,一个用于tribe_events,一个用于news_update。

然后,您将拥有三个帖子数组,这些帖子将一次存储一天。

我建议您查看瞬态API,特别是如何及早删除瞬态,以便在发布新帖子时进行更新等。

然后,您可以合并这些数组,以便在所有选项卡中使用。

进一步阅读:http://codex.wordpress.org/Transients_API