WP_QUERY获取特定类别和帖子格式的帖子

时间:2011-08-31 作者:jaacob

我一直在尝试利用WP_Queryget_posts 拿出一篇既属于特定类别又属于特定帖子格式的最新帖子。

<?php 
$singargs = array(
\'numberposts\' => 1,
\'tax_query\' => array(
    \'relation\' => \'AND\',
    array(
        \'taxonomy\' => \'category\',
        \'field\' => \'slug\',
        \'terms\' => array ( \'gift-of-the-day\' ),
    ),
    array(
        \'taxonomy\', => \'post_format\',
        \'field\' => \'slug\',
        \'terms\' => array( \'aside\'),
    )
)
);
$singPost = new WP_Query( $singargs );
foreach ( $singPost as $post ) : setup_postdata($post); ?>
<aside>
    <h2><?php the_title(); ?></h2>
</aside>
<?php endforeach; wp_reset_postdata(); ?>
我做错了什么?

2 个回复
SO网友:Bainternet

我看到两个问题:改变asidepost-format-aside 由于您使用的是foreach循环更改new WP_Query( $singargs );get_posts( $singargs ); 因此,您的代码应该如下所示:

<?php 
$singargs = array(
\'numberposts\' => 1,
\'tax_query\' => array(
    \'relation\' => \'AND\',
    array(
        \'taxonomy\' => \'category\',
        \'field\' => \'slug\',
        \'terms\' => array ( \'gift-of-the-day\' ),
    ),
    array(
        \'taxonomy\', => \'post_format\',
        \'field\' => \'slug\',
        \'terms\' => array( \'post-format-aside\'),
    )
)
);
$singPost = get_posts( $singargs );
foreach ( $singPost as $post ) : setup_postdata($post); ?>
<aside>
    <h2><?php the_title(); ?></h2>
</aside>
<?php endforeach; wp_reset_postdata(); ?>

SO网友:Simon

为什么不直接使用以下内容:

$args = array(\'category\' => 1 );
$all_posts = get_posts( $args);
foreach ($all_posts as $this_post) {
    if ( has_post_format( \'aside\' ) ) {
        echo \'<aside><h2>\' . $this_post->title . \'</h2></aside>\';
        break;
        }
}
可能是代码中的一些错误,但想法是首先获取通缉类别中的帖子,然后对其进行解析,并获取具有通缉帖子格式的第一篇帖子(以防代码无法正常工作)。

对不起,如果我错了!

结束

相关推荐

Loop inside the loop

我正在做一个项目,我需要显示一个类别中的2篇文章,还需要在这篇文章之间设置另一个循环,以显示其他类别中的随机文章列表。最简单的方法是创建3个查询,但当我为一个类别创建2个查询时,出现了一个问题,一个循环中断并显示两个帖子,第二个很好。我在第二次查询中使用了offset参数,但它不起作用。<?php $first_query_args = array( \'category_name\' => \'first-category\',&