【get_posts】と【pre_get_posts】でループを回す方法

get_posts,pre_get_posts

get_postsはサブループで使うこと。関連記事やサイドバーなどのページネーションを必要としないもの。

pre_get_postsはメインループで使うこと。記事一覧のアーカイブページでページネーションを必要とするもの。

get_postsの書き方

<?php
$args = array(
	'post_type' => '投稿タイプ名',
	'posts_per_page' => 6,
	'orderby' => 'rand',
	'order' => 'DISC',
	'tax_query'      => array(
		array(
			'taxonomy' => 'カスタムタクソノミー名', 
			'field'    => 'slug', 
			'terms'    => 'タームスラッグ'
		)
	)
);
$postslist = get_posts($args);
?>
<?php if( $postslist ) : foreach( $postslist as $post ) : setup_postdata( $post ); ?>
	// 記事出力
<?php endforeach; endif; wp_reset_postdata();?>

パラメータの解説

post_type post 投稿を出力
カスタム投稿名 指定したカスタム投稿を出力
posts_per_page 出力したい数字 -1で全て出力
orderby menu_order 投稿の属性の並びで出力
rand ランダムで出力
order DISC 降順 (高→低) (新→古)
ASC 昇順 (低→高) (古→新)
tax_query taxonomy 出力したいカスタムタクソノミー名
field タームをterm_id,slug,nameのどれで指定するか
terms fieldで指定した方法でタームを指定 複数の場合はarrayで配列にする

pre_get_postsの書き方

functions.php

<?php
function main_loop($query){
    if (is_admin() || !$query->is_main_query()) {
        return;
    }
    if ($query->is_home()) {
        $query->set('posts_per_page', 10);
        return;
    }
}
add_action('pre_get_posts', 'main_loop');

$pagedに関する記述はなし。

ループさせたいテンプレートに記述。

<?php if(have_posts()): ?>
	<?php while(have_posts()): the_post(); ?>
// 表示内容を記述
	<?php endwhile; ?>
		<?php
		if (function_exists("pagination")) {
			pagination($additional_loop->max_num_pages);
		}
		?>
<?php endif; wp_reset_postdata();?>

pre_get_postsfunctions.php内で条件分岐(if文)で各アーカイブページの表示件数などのパラメータを制御します。

テンプレートごとの条件分岐をまとめておきます。$query->の後ろにつけてください。

is_home() トップページ
is_page() 固定ページ
is_archive() アーカイブページ
is_post_type_archive(‘カスタム投稿名’) 指定したカスタム投稿アーカイブページ
is_tax(‘タクソノミースラッグ’) 指定したタクソノミー
is_tax(‘タクソノミースラッグ’,’タームスラッグ’)  指定したターム
is_search()  検索結果のページ
is_year() 年別アーカイブページ
is_month() 月別アーカイブページ
is_date() 日付アーカイブページ

Recruit

私たちは共に働く仲間を求めています。Web制作・広告運用・SEO対策・マーケティング・Web解析・メディア運用・ライティング・Webサービス開発が主な業務です。

PartnerShip

Web制作会社・広告代理店・デザイン会社・コンサルティング会社様

パートナー提携はコチラから

Contact

平日 9:30 - 19:00

TEL 06-6125-5439

無料相談

お問合せ

お見積もり