我试图确定解决此问题的最佳方法。我创建了一个插件,可以调用三种帖子类型(帖子,事件,新闻),所以在我的插件中我使用单个查询来调用它们
$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个帖子。
我必须做些什么选择?任何帮助,将不胜感激。
答案 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,特别是如何及早删除瞬态,以便在发布新帖子时进行更新等。
然后,您可以合并这些数组,以便在所有选项卡中使用。