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

croitreWordPress, カスタム投稿タイプ

WordPressのカスタム投稿タイプで新着一覧を表示する

web制作に役立つ情報を紹介する「どやブログ」さんの
どや!?WordPressでのサイト制作を簡単にしてくれる魔法のコード
こちらを参考にさせて頂きました!

シングルページで同一タクソノミーだけを出す場合

まずカスタム投稿タイプのシングルページをオリジナルの内容にしたい時は、ファイル名を

single-[投稿タイプ名].php

にする。


<?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>

同一カスタム投稿タイプの一覧を出す場合(タクソノミーも出力)

上のソースは、子カテゴリーのみを出す場合でしたが、親カテゴリーの新着一覧表示をさせて、
子カテゴリー名も出力する場合です。

<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>