【wordpress】いろいろな投稿記事一覧の出力方法

2021年6月2日

トップページ設置用

元記事:カスタム投稿タイプをトップページにお知らせ表示

今回は通常投稿向け。

    <?php
    $args = array(
        'posts_per_page' => 4,
        'post_type' => 'post', //postは通常の投稿機能
        'post_status' => 'publish'
    );
    $my_posts = get_posts($args);
    ?>
    <?php foreach ($my_posts as $post): setup_postdata($post); ?>
        <div class="article">
            <dl>
                <dt>
                <span class="date"><?php the_time('Y/n/j'); ?></span>
                </dt>
                <dd>
                <h3><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h3>
                </dd>
            </dl>
        </div>
    <?php endforeach; ?>
    <?php wp_reset_postdata(); ?>

カスタマイズ用ヒント

'posts_per_page’ => 4, …表示させる投稿数

'post_type’ => 'post',  …表示させる投稿タイプslug

投稿一覧ページ用

<?php get_header(); ?>
<?php query_posts('post_type=post&paged=' . $paged); ?>
<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
        <div class="post">
            <p><?php the_time("Y/m/j") ?></p>
            <h2><a href="<?php the_permalink() ?>"><?php the_title(); ?></a></h2>
            <?php
            if (has_post_thumbnail()) {
                the_post_thumbnail();
            }
            ?>
            <?php
            global $more;
            $more = FALSE;
            ?>
            <?php the_content('続きを読む'); ?>
            <?php $more = TRUE; ?>
        </div>
    <?php endwhile; ?>
    <?php echo paginate_links(); ?>
<?php else : ?>
    <div class="post">
        <h2>記事が見つかりません</h2>
        <p>記事が存在しないときのテキスト</p>
    </div>
<?php endif; ?>
<?php wp_reset_query(); ?>


<?php get_template_part('pagination');//html5blank用 ?>

カスタマイズ用ヒント

<?php query_posts('post_type=★投稿タイプslug★&paged=’ . $paged); ?>

<?php query_posts('post_type=post&cat=★カテゴリID★&paged=’ . $paged); ?>

固定ページ内部用

new WP_Query(); が必要。

<?php
    $args = array(
        'posts_per_page' => 5,
        'category_name' => "other",
        'post_type'=>'post',
    );
?>
<dl>
  <?php
  $my_posts=new WP_Query();
  $my_posts->query($args);
  if($my_posts->have_posts()): while($my_posts->have_posts()):$my_posts->the_post();
    ?>
    <?php
    $cat=get_the_category();
    $cat=$cat[0];
    ?>
    <dt><span class="cat cat_<?php echo $cat->category_nicename; ?>"><?php echo $cat->cat_name; ?></span>
      <span class="date"><?php the_time('Y.m.d'); ?></span>
    </dt>
    <dd class="ttl">
      <a href="<?php the_permalink(); ?>">
        <?php the_title(); ?>
      </a>
    </dd>
  <?php endwhile; endif; ?>
</dl>
<a class="btn btn_more_arrow_black" href="<?php echo home_url(); ?>/news/">more</a>
<?php wp_reset_postdata(); ?>

カスタム投稿タイプ×カスタムタクソノミーごとにループ

                <?php
                // タクソノミ取得
                $catargs = array(
                    'taxonomy' => 'glossary_cat',
                );
                $catlists = get_terms($catargs);
                foreach ($catlists as $k => $cat) : // 取得したカテゴリの配列でループを回す
                    ?>
                    <section class="glossary_cat_wrap">
                        <h3 class="<?php echo ($k % 2 == 0) ? 'line_red' : 'line_green' ?>" id="<?php echo $cat->slug; ?>"><?php echo $cat->name; ?></h3>
                        <?php
                        $args = array(
                            'post_type' => 'glossary',
                            'posts_per_page' => -1, //表示件数(-1は全件表示)
                            'orderby' => 'date', //ソートの基準
                            'order' => 'ASC', //DESC降順 ASC昇順
                            'glossary_cat' => $cat->slug);
                        $my_posts = get_posts($args);
                        if ($my_posts) { // 該当する投稿があったら
                            foreach ($my_posts as $post) :
                                setup_postdata($post);
                                ?>
                                <article>
                                    <h4 class="glossary_ttl"><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
                                    <p><?php the_excerpt(); ?></p>
                                </article>
                                <?php
                            endforeach;
                        } else {
                            echo 'このカテゴリに投稿はありません';
                        }
                        wp_reset_postdata();
                        ?>
                    </section>
                <?php endforeach; ?>