• 解決済 tamaki75

    (@tamaki75)


    お世話になります。
    taxonomy-カスタムタクソノミー-ターム.phpで
    タームに属する記事の最新更新順にターム一覧を作りたいのですがうまくいきません。

    カスタム投稿:column
    カスタムタクソノミー:columcate
    ターム:series
    の子ターム(連載A、連載B、連載C…)とあり、
    連載それぞれの最新記事を1件、著者名、最新記事のアイキャッチサムネイルを表示させたいと思っております。

    このターム一覧を、記事が新しい順に並べたいのです。

    リンク先のサンプルコードを使ってみましたが、最新記事順にすることができず、
    以下のように書いてみましたが、これですと同じ子ターム(連載)が記事ごとに表示されてしまいます。

    的外れな書き方になっているかもですが、ご教示いただけますと幸いです。

    例)
    連載B
    ・最新記事(2017.11.08)
    連載B
    ・最新記事(2017.11.07)
    連載A
    ・最新記事(2017.11.06)
    連載C
    ・最新記事(2017.11.05)

    
    <?php
        $taxonomy = $wp_query->get_queried_object();
        $args = array(
            'post_type' => 'column',
    	 'orderby' => 'post_date',
    	 'order'=>'DESC',
            'post_parent' => 'series',
    	 'posts_per_page' => -1,
            'tax_query' => array(
                array(
                    'taxonomy' => 'columcate', // タクソノミー名
                    'terms' => array( $taxonomy->slug ),
                    'field'=>'slug',
    		 'show_count' => 1
                )
            )
        );
    ?>
    
     <?php $loop = new WP_Query( $args ); ?>
    <?php if($loop -> have_posts()): ?>
        <?php while($loop -> have_posts()): $loop->the_post();?>
        <div class="head_author cf">
        <a href="<?php the_permalink(); ?>">
        <div class="head_avatar">
         <?php echo get_the_post_thumbnail( $tax_post->ID, 'thumbnail' ); ?>
    			</div>
        <div class="head_authorpr">
         <?php
    $terms = get_the_terms( $post->ID, 'columcate' );
    foreach ( $terms as $term ) {
    if ( $term->parent != 0 ) {
    echo '<h3>'. $term->name . '</h3>';
    }
    }
    ?> 
    <p><?php echo get_the_title($tax_post->ID); ?> <?php echo get_the_date(); ?> </p>      
    <p><?php the_author_meta( 'display_name' ); ?></p>
    </div>        
            </a>
       </div>
        <?php endwhile; ?> 
     <?php endif; ?>  
    
     <?php wp_reset_query(); ?>       
    

    ヘルプの必要なページ: [リンクを見るにはログイン]

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • LABE

    (@latobeam)

    こういうことでしょうか。違ったらごめんなさい。

    $the_term = $wp_query->get_queried_object();
    // 子タームをすべて取得
    $terms = get_terms(array(
        'taxonomy' => $the_term->taxonomy,
        'parent' => intval($the_term->term_id),
    ));
    // 記事の配列
    $column_posts = array();
    if ( $terms ) {
        foreach ( $terms as $term ) {
            // 子ターム毎に最新記事を1件だけ取得
            $column_post = get_posts(array(
                'posts_per_page' => 1,
                'orderby' => 'date',
                'order' => 'DESC',
                'post_type' => 'column',
                'tax_query' => array(
                    array(
                        'taxonomy' => $term->taxonomy,
                        'terms' => intval($term->term_id),
                    ),
                ),
            ));
            // 記事を配列に追加
            $column_post = reset($column_post);
            if ( $column_post )
                $column_posts[] = $column_post;
        }
    }
    if ( $column_posts ) {
        // 配列を最新順に整列
        $column_posts = wp_list_sort($column_posts, 'post_date', 'DESC');
        // ループ
        foreach ( $column_posts as $post ) {
            setup_postdata($post); ?>
        <div class="head_author cf">
            <a href="<?php the_permalink(); ?>">
                <?php echo get_the_title(); ?>
            </a>
        </div>
    <?php
        }
        // ループ終わり
        wp_reset_postdata();
    }
    トピック投稿者 tamaki75

    (@tamaki75)

    LABE 様

    ありがとうございます!

    そうです。
    まさにこの動きでした。

    このソートの仕方がわからず悩んでおりました。
    勉強になりました。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「最新記事順にターム一覧を並べて表示したい」には新たに返信することはできません。