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

2017年10月9日

トップページ設置用

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

今回は通常投稿向け。

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

 

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

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