WordPressのカスタム投稿タイプで新着一覧を表示する
web制作に役立つ情報を紹介する「どやブログ」さんの
「どや!?WordPressでのサイト制作を簡単にしてくれる魔法のコード」
こちらを参考にさせて頂きました!
シングルページで同一タクソノミーだけを出す場合
まずカスタム投稿タイプのシングルページをオリジナルの内容にしたい時は、ファイル名を
single-[投稿タイプ名].php
にする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <?php $term = array_shift (get_the_terms( $post ->ID, '[カスタムタクソノミーのスラッグ]' )); ?> <?php $tax_posts = get_posts('post_type=[投稿タイプのスラッグ]& taxonomy= '[カスタムタクソノミーのスラッグ]' &term='.esc_html( $term ->slug)); if ( $tax_posts ): ?> <ul> <?php foreach ( $tax_posts as $tax_post ): ?> <?php if ( $post ->ID != $tax_post ->ID): ?> <li><span class = 'date' > <?php the_time( 'Y年m月d日' ); ?> </span><br /> <a href= "<?php echo get_permalink($tax_post->ID); ?>" class = "newstitle" > <?php echo esc_html( $tax_post ->post_title); ?></a> </li> <?php else : ?> <li><span class = 'date' > <?php the_time( 'Y年m月d日' ); ?> </span><br /> <?php echo esc_html( $tax_post ->post_title); ?></li> <?php endif ; ?> <?php endforeach ; ?> </ul> <?php endif ; ?> </ul> |
同一カスタム投稿タイプの一覧を出す場合(タクソノミーも出力)
上のソースは、子カテゴリーのみを出す場合でしたが、親カテゴリーの新着一覧表示をさせて、
子カテゴリー名も出力する場合です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | <ul> <?php // ▽ポストタイプとタクソノミーを入力 $post_type = '[投稿タイプのスラッグ]' ; $taxonomy = '[カスタムタクソノミーのスラッグ]' ; $term = '' ; // △ $args = array ( 'post_type' => $post_type , 'post_status' => 'publish' , 'posts_per_page' => 5, 'orderby' => 'date' , 'order' => DESC, 'caller_get_posts' => 1 ); $my_posts = get_posts( $args ); foreach ( $my_posts as $post ) { setup_postdata( $post ); $post_title = $post ->post_title; ?> <li><span class = 'date' > <?php the_time( 'Y年m月d日' ); ?> </span><br /> <?php $terms = get_the_terms( $post ->ID, $taxonomy ); if ( $terms && ! is_wp_error( $terms ) ) : $draught_links = array (); foreach ( $terms as $term ) { echo '【' . get_the_term_list( $post ->ID, '[カスタムタクソノミーのスラッグ]' ) . '】' ; echo '<a href="' ; the_permalink(); echo '" class="newstitle">' ; echo mb_substr( $post ->post_title, 0, 20). '...' ; echo '</a>' ; } endif ; } ?> </li> </ul> |