WordPress分类标准,仅列出单一分类法

时间:2015-07-07 09:28:09

标签: php wordpress taxonomy

所以我有一个自定义的分类'扇区'。

我试图在列表中显示“Sectors”中的所有单个帖子,只是一个基本列表。

我目前确实如此,它会显示类别,然后是子类别,然后是那里的列表。

我也有这个,列出了所有帖子 - (非分类):

<?php 
      $uncat = get_cat_ID('uncategorised');
      $args = array(
        'posts_per_page' => 5,
        'category__not_in' => array($uncat)
        );
      $loop = new WP_Query( $args );
      while ($loop->have_posts() ) : $loop->the_post();
      ?>
      <div class="col-md-12 col-sm-12 col-xs-12" style="padding-left:0; padding-right:0;">
        <a href="<?php echo get_permalink(); ?>">
        <div class="postsize">
          <div class="leftfloat" style="float: left; padding-right:20px;">
            <?php echo get_the_post_thumbnail( $page->ID, 'categoryimage', array('class' => 'faqposts')); ?>

          </div>
          <div class="contentfaq">
          <h3><?php the_title(); ?></h3>
          <span class="entry-date-orange"><strong><?php echo get_the_date(); ?></strong></span>
          <?php
          foreach((get_the_category()) as $category) { 
            echo ' | ' . $category->cat_name; 
          } 
          ?>

          <p style="margin-top:10px";><?php the_excerpt(); ?></p>
        </div>
        </div>
      </a>
      </div>

    <?php endwhile; ?>
    <?php wp_reset_query(); ?> 

有没有办法,使用下面这段代码,只能从分类学“部门”获取项目?

1 个答案:

答案 0 :(得分:0)

为此,您需要获取属于您的分类的所有条款,然后使用tax_query查询正确的帖子。为了有效,我们只会得到术语ID而不是完整的对象

注意: 代码未经测试,需要PHP 5.4+。另外,只需确认分类名称

$term_ids = get_terms( 'SectorCategories', ['fields' => 'ids'] );
if ( get_query_var( 'paged' ) ) {
    $paged = get_query_var( 'paged' );
} elseif ( get_query_var( 'page' ) ) {
    $paged = get_query_var( 'page' );
} else { 
    $paged = 1;
}
$args = [
    'post_type' => 'sectors',
    'posts_per_page' => 5,
    'paged' => $paged,
    'tax_query' => [
        [
            'taxonomy' => 'SectorCategories',
            'terms' => $term_ids,
        ]
    ],
    // REST OF YOUR ARGUMENTS
];
$loop = new WP_Query( $args );

修改

对于较旧的PHP版本,请使用以下代码

$term_ids = get_terms( 'SectorCategories', array( 'fields' => 'ids' ) );
if ( get_query_var( 'paged' ) ) {
    $paged = get_query_var( 'paged' );
} elseif ( get_query_var( 'page' ) ) {
    $paged = get_query_var( 'page' );
} else { 
    $paged = 1;
}
$args = array(
    'post_type' => 'sectors',
    'posts_per_page' => 5,
    'paged' => $paged,
    'tax_query' => array(
        array(
            'taxonomy' => 'SectorCategories',
            'terms' => $term_ids,
        )
    ),
    // REST OF YOUR ARGUMENTS
);
$loop = new WP_Query( $args );

编辑2

上述查询的一个非常基本的循环看起来像这样

if ( $loop->have_posts() ) {
    while ( $loop->have_posts() ) {
    $loop->the_post();

        the_title();

    }
    next_posts_link( 'Next posts', $loop->max_num_pages );
    previous_posts_link( 'Previous posts' );
    wp_reset_postdata();
}