是的,这是可以做到的,但这是一项相当艰巨的工作,所以我只给你一个提纲:
首先,如果您查看下面的最后一个示例taxonomy parameters of wp_query
您将看到,您可以查询post格式作为一种分类法。因此,您可以查看以下内容(未经测试),以获取链接和报价格式的所有帖子:
$args = array(
\'post_type\' => \'post\',
\'tax_query\' => array(
\'relation\' => \'OR\',
array(
\'taxonomy\' => \'post_format\',
\'field\' => \'slug\',
\'terms\' => array( \'post-format-link\' ),
),
array(
\'taxonomy\' => \'post_format\',
\'field\' => \'slug\',
\'terms\' => array( \'post-format-quote\' ),
),
),
);
$query = new WP_Query( $args );
此时,仍有两件事要做:对数组进行排序,使链接格式的帖子排在第一位,并将帖子数量限制为1个来自链接的帖子和3个来自报价格式的帖子。不幸地
ordering by taxonomy in a query is not directly supported. 这也使得很难选择每个帖子格式的帖子数量。解决这个问题的最简单方法是通过循环
$query
两次使用
rewind_posts
:
// Get one post with format link
while ($query->have_posts()) {
$i=0;
if (has_post_format(\'link\') && $i<1) {
// do your thing
$i = $i+1;
}
}
$query->rewind_posts();
// Get three posts with format quote
while ($query->have_posts()) {
$i=0;
if (has_post_format(\'quote\') && $i<3) {
// do your thing
$i = $i+1;
}
}
请注意,您仍然需要添加一些逻辑来解释没有足够帖子显示的情况。