输出特定父类别的每个子类别的最新帖子

时间:2017-04-25 13:06:42

标签: wordpress arguments parent categories children

我想从父类的每个类别(子类别)输出最新帖子。父类别ID为54。

例如,如果类别54下有7个子类别,则输出帖子的数量应为7(每个子类别中最新的)。我希望这是有道理的。

我目前的代码如下。在此阶段,此代码仅输出一个最新的帖子(1个子类别),其最新的cat id = 54。如果您可以建议我如何修改它以便我可以从多个子类别中获得更多最新帖子,那将是很棒的。

<?php 
$categories = get_categories();
foreach ( $categories as $category ) {
    $args = array(
    'cat' => 54,
    'post_type' => 'post',
    'posts_per_page' => '1',
    );
}
?>
<?php $query = new WP_Query( $args ); ?>
<?php if ($query->have_posts()) : ?>
<div class="container">

<?php while ($query->have_posts()) : $query->the_post(); ?>   
<div class="box">
<article>
    <p><?php foreach((get_the_category()) as $childcat) { if (cat_is_ancestor_of(54, $childcat)) { echo '<a href="'.get_category_link($childcat->cat_ID).'">'; echo $childcat->cat_name . '</a>'; }} ?></p>
    <?php if ( has_post_thumbnail() ): ?><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('box-pic'); ?></a><?php endif; ?>
    <h3><a href="<?php the_permalink(); ?>"><?php the_title();?></a></h3>
</article>
</div>
<?php endwhile;?>

</div>
<?php endif; ?>
<?php wp_reset_query(); ?>

2 个答案:

答案 0 :(得分:0)

这是您需要使用的逻辑,

$term_id = 54;
$taxonomy_name = 'category';
$term_children = get_term_children( $term_id, $taxonomy_name );

echo '<ul>';
foreach ( $term_children as $child ) {
    $term = get_term_by( 'id', $child, $taxonomy_name );

    $args = array(
    'cat' => $term->term_id,
    'post_type' => 'post',
    'posts_per_page' => '1',
    );
    $query = new WP_Query( $args ); ?>
    <?php if ($query->have_posts()) : ?>
    <div class="container">

    <?php while ($query->have_posts()) : $query->the_post(); ?>
    <div class="box">
    <article>
    <p><?php foreach((get_the_category()) as $childcat) { if (cat_is_ancestor_of(54, $childcat)) { echo '<a href="'.get_category_link($childcat->cat_ID).'">'; echo $childcat->cat_name . '</a>'; }} ?></p>
    <?php if ( has_post_thumbnail() ): ?><a href="<?php the_permalink(); ?>"><?php the_post_thumbnail('box-pic'); ?></a><?php endif; ?>
    <h3><a href="<?php the_permalink(); ?>"><?php the_title();?></a>
    </h3>
    </article>
    </div>
    <?php endwhile;?>

    </div>
    <?php endif; ?>
        <?php wp_reset_query();
 }
 echo '</ul>';

答案 1 :(得分:0)

试试这个,

$args = array(
        'post_type' => $post_type,
        'posts_per_page' => 7,
        'tax_query' => array(
            array(
                'taxonomy' => $taxonomy,
                'field' => 'term_id',
                'terms' => $term_id
            )
        ) 
    );
    $query = new WP_Query($args);

将$ term_id传递给tax_query。

{{1}}

这对你有用。