カスタム投稿タイプで新着一覧を出力する

croitreWordPress, カスタム投稿タイプ

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>