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>