特定記事一覧ページの作成について
2020-04-20
特定記事の一覧を作成したい、といった場合に用いられる方法ですが、検索すると
・get_posts()
・WP_Query()
・query_posts() (非推奨)
などが出てきて、どのように組み立てていけば良いかと迷うので、まとめてみました。
まず、query_posts()は SQLクエリを再実行するので非効率、メインクエリを書き換えてしまう為に、ページングなど一部の処理で正常に動作しないことがある、などの点で非推奨となっているようなので、今回はスルーします。
get_posts()
1 2 3 4 5 6 7 8 9 10 11 |
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => 10 ); ?> <?php $the_query = get_posts($args); ?> <?php if($the_query): ?> <?php foreach($the_query as $post) : setup_postdata($post); ?> <?php the_title(); ?> <?php endforeach; ?> <?php endif; ?> <?php wp_reset_postdata(); ?> |
WP_Query()
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $args = array( 'post_type' => 'post', 'posts_per_page' => 10, 'paged' => $paged ); ?> <?php $the_query = new WP_Query($args); ?> <?php if($the_query->have_posts()) : ?> <?php while($the_query->have_posts()) : $the_query->the_post(); ?> <?php the_title(); ?> <?php endwhile; ?> <?php endif; ?> <?php wp_reset_postdata(); ?> |
という感じで、具体的な記述方法になります。
最後の一文に、
1 |
<?php wp_reset_postdata(); ?> |
と記述しておくことを忘れずに。
備考
本サイトの『おすすめの記事はこちら』の部分は、get_post()を使用していて、下記にその一部を記載しておきます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<ul> <?php $args = array( 'numberposts' => 4, 'orderby' => 'rand' ); $rand_posts = get_posts( $args ); foreach( $rand_posts as $post ) : $categories = get_the_category(); ?> <li><a href="<?php the_permalink(); ?>"><dl> <dt><?php the_post_thumbnail(); ?></dt> <dd><span class="tag tag-<?php echo $categories[0]->cat_ID; ?>"><?php echo $categories[0] -> name; ?></span><?php the_title(); ?></dd> </dl></a></li> <?php endforeach; ?> </ul> |
orderbyで、‘rand’を指定することで、ランダムで表示するようにしています。
また、get_the_category()にて、カテゴリーの取得をして、classやカテゴリー名の表示なども組み合わせています。