显示特定帖子格式的帖子

时间:2018-04-26 作者:AB Siddik

我想显示WordPress帖子类型中的4篇帖子,其中1篇将显示链接格式的帖子,另外3篇将显示其他格式的帖子。

那么在这种情况下,如何使用查询,或者如果有人能给出一个想法,什么方法会更好?

Related image

2 个回复
最合适的回答,由SO网友:cjbj 整理而成

是的,这是可以做到的,但这是一项相当艰巨的工作,所以我只给你一个提纲:

首先,如果您查看下面的最后一个示例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;
    }
  }
请注意,您仍然需要添加一些逻辑来解释没有足够帖子显示的情况。

SO网友:Minh

在循环中:

while ( have_posts() ) : the_post();

  get_template_part( \'template-parts/content\', get_post_format() );

endwhile;
在主题中,您应该有一个目录“template parts”,并有以下文件:

content.php
content-link.php
content-another_format.php

结束

相关推荐

Loop inside query

我有一个数组来存储分类法和查询术语,但我不能使用foreach在tax\\u查询中循环我的数组。我拿到了505内线。 $query = array( \'post_type\' => $post_type, \'posts_per_page\' => -1, ); $query[\'tax_query\'] = array( \'relation\' => \'OR\