ショウジンブログ on Hatena

“お芝居をしないと、この社会では異邦人として扱われるほかない”

複数のカスタム投稿及びカスタム分類を指定してひとつのループで出力@WordPress

異なるカスタム投稿、カスタム分類を複数指定して同じループにまとめて出力する例です。

配列のpost_typeで投稿タイプを指定。(複数の場合にはカンマ区切りで)

tax_queryでrelationはORを指定し、taxonomy、field、termsでカスタム分類を指定しています。

本題とは関係ありませんが、投稿タイトルの文字数を指定して、指定した文字数以上は丸める処理も記述していますので、不要であればこの処理はなくして、普通にタイトルを出力させます。

<?php
$args = array(
    'post_type' => array('info-nicchu', 'info-ja'), /* 投稿タイプを指定 */
    'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'info-course-category', /* 指定したい投稿タイプが持つカスタム分類を指定 */
            'field' => 'slug',
            'terms' => 'jpcn', /* 指定したカスタム分類が持つタームのスラッグを指定 */
        ),
        array(
            'taxonomy' => 'info-category', /* 指定したい投稿タイプが持つカスタム分類を指定 */
            'field' => 'slug',
            'terms' => 'info', /* 指定したカスタム分類が持つタームのスラッグを指定 */
        ),
    ),
    'paged' => $paged,
    'posts_per_page' => '5' /* 5件を取得 */
); ?>
<?php query_posts( $args ); ?>
<?php if (have_posts()) : ?>
     <?php while (have_posts()) : the_post(); /* ループ開始 */ ?>
    <dl>
        <dt><a href="<?php the_permalink(); ?>"><?php echo get_post_time('Y年m月d日'); ?></a></dt>
        <dd><a href="<?php the_permalink(); ?>"><?php if(mb_strlen($post->post_title)>30) { $title= mb_substr($post->post_title,0,30) ; echo $title. … ;
} else {echo $post->post_title;}?></a></dd>
    </dl>
     <?php endwhile; ?>
<?php else : ?>
    <dl>
        <dt>記事がありません</dt>
        <dd>表示する記事はありませんでした。</dd>
    </dl>
<?php endif; ?>
<?php wp_reset_query(); // ループをリセット ?>