Querying Term Posts in Loop

时间:2013-10-17 作者:Howdy_McGee

我试图在标题下显示我的CPT类别以及与之相关的任何帖子。我有第一个循环,很好:

<?php $cats = get_categories(array(\'taxonomy\' => \'custtax\', \'orderby\' => \'term_group\')); 
    if(!empty($cats)) : 
        foreach($cats as $cat) : ?>
            <a href="<?php echo get_category_link($cat->term_id); ?>"><?php echo $cat->name; ?></a>
                <br />
            <?php wp_reset_query(); ?>
            <?php $cat_posts = new WP_Query(array(\'post_type\' => \'custcpt\', \'taxonomy\' => \'custtax\', \'terms\' => $cat->slug, \'order\' => \'ASC\'));
            foreach($cat_posts as $cat_post) : ?>

                    <center><?php get_the_post_thumbnail($cat_post->ID, \'thumbnail\'); ?></center>
                        <br />
                    <a href="<?php get_permalink($cat_post->ID); ?>"><?php get_the_title($cat_post->ID); ?></a>
                        <br />
                        <br />

            <?php endforeach; ?>
        <?php endforeach; ?>
    <?php endif; ?>
但我的第二个循环查询我的所有帖子,而不仅仅是来自该类别的帖子。我试过了get_posts() 它没有拉所有的柱子,也没有拉任何柱子。我不确定\'category\' 在codex中需要字符串、slug或ID,但我已经尝试了所有3个。无论如何,我如何编辑我的查询以仅从该特定类别中获取帖子?

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

要扩展@s\\u ha\\u dum的答案,您需要修改有关查询的一些内容。

首先,使用他建议的税务查询:

$args = array(
    \'post_type\' => \'custcpt\', 
    \'tax_query\' => array(
        array(
            \'taxonomy\' => \'custtax\', 
            \'field\' => \'id\',
            \'terms\' => $cat->term_id,
        )
    ), 
    \'order\' => \'ASC\'
);
然后,按如下方式修改代码:

$cat_posts = new WP_Query($args);
while ($cat_posts->have_posts()) :
    $cat_posts->the_post(); 
    // Below, when referencing the post variables, must be as $cat_post->post->ID, etc. ?>
    <center><?php get_the_post_thumbnail($cat_post->post->ID, \'thumbnail\'); ?></center>
    <br />
    <?php // Below, don\'t need to pass the post ID into these functions.  ?>
    <a href="<?php get_permalink(); ?>"><?php get_the_title(); ?></a>
                    <br />
                    <br />

        <?php endwhile; ?>
    <?php endif; ?>
请注意以下几点:

您必须使用while ($cat_posts->have_posts) 在立柱上迭代cat_posts->the_post() 准备要在功能中显示的数据,如get_the_title() $cat_posts->post->ID get_the_title(), 您不需要输入ID

SO网友:s_ha_dum

你需要一个tax_query 你所拥有的并不是这样。

$cat_posts = new WP_Query(
  array(
    \'post_type\' => \'custcpt\', 
    \'tax_query\' => array(
      array(
        \'taxonomy\' => \'custtax\', 
        \'field\' => \'id\',
        \'terms\' => $cat->term_id,
      )
    ), 
    \'order\' => \'ASC\'
  )
);

结束

相关推荐

将可用小工具拖动到侧边栏区域时启用jQuery

因此,我有一些小部件在后端使用一些自定义jquery。我可以让小部件表单调用jquery文件,但只有在保存小部件并重新加载页面之后。在我将jquery从“可用的小部件”区域拖到提要栏区域后,是否可以立即使用它?因此,在我的小部件代码中,在表单函数中,我有以下内容:function form( $instance ) { wp_enqueue_media(); wp_enqueue_script(\'kjd_widgets\',plugins_url(\'lib/kjd_widge