如何显示自定义分类的特定术语的帖子?

时间:2014-09-28 作者:Alamin

我已经为自定义帖子创建了自定义分类法。现在我想显示与特定术语相关的所有帖子。假设我有两个术语term1和term2。单击term1时,将显示与term1相关的所有帖子,而不会显示与term2相关的帖子。但现在,当我单击term1时,就会一次显示与term1和term2相关的帖子。我已经编写了以下代码taxonomy.php样板

             <div class="main-content">
                    <?php
                    $term = get_term_by( \'slug\', get_query_var( \'term\' ), get_query_var( \'taxonomy\' ) );

                        $the_query = new WP_Query( array(
                            \'post_type\' => array(\'newsbox_post\'),
                            \'tax_query\' => array(
                                \'taxonomy\' => $term->taxonomy,
                                \'field\' => \'slug\',
                                \'terms\' => $term->name,
                            ),
                        ) );

                    ?>
                    <?php if ($the_query->have_posts()) : while ($the_query->have_posts()) : $the_query->the_post(); ?>
                        <div class="post">
                                <a href="<?php the_permalink(); ?>" title="<?php the_title_attribute(); ?>"><?php the_title(); ?></a>
                                <?php the_content(); ?> 
                                <?php echo get_the_term_list( $post->ID, $term->taxonomy, \'People: \', \', \' );  ?>
                                <hr />
                        </div>

                    <?php 
                        endwhile;
                        wp_reset_postdata();
                        else:?>
                            <h3><?php _e(\'404 Error&#58; Not Found\'); ?></h3>
                    <?php
                        endif;
                    ?>  
                </div>
请告诉我,我怎样才能做到这一点。

1 个回复
最合适的回答,由SO网友:Pieter Goosen 整理而成

不建议运行自定义查询来代替主查询。您正在尝试的操作已由主查询完成。简而言之,您正在尝试重新发明轮子:-)。

您的首要解决方案是返回默认循环,并通过pre_get_posts. 检查this post 有关详细信息

就在代码上,您正在将术语名称传递给terms 参数,其中您应该传递术语slug,因为您已经设置了fieldslug. 此外,您的tax_query 应该是数组的数组。将代码更改为

 $the_query = new WP_Query( array(
    \'post_type\' => array(\'newsbox_post\'),
    \'tax_query\' => array(
        array(
            \'taxonomy\' => $term->taxonomy,
            \'field\' => \'slug\',
            \'terms\' => $term->slug,
        ),
    ),  
) );

结束

相关推荐

如何执行一个SQL查询来排除表wp_Terms中除自定义分类术语之外的所有术语?

问题摘要:我正在尝试编写一个只返回自定义分类术语的SQL查询,但该表(wp\\u terms)包含所有术语,甚至包括我不需要的术语(例如类别术语和nav\\u菜单术语)。This is my present query:function myajax_inputtitleSubmit_func() { global $wpdb; global $customTerms; $acInput = $_GET[\'input\']; $mydb = new wpdb(\