WordPressで先頭位置固定の記事が固定されない

WordPressのカスタムテーマで先頭位置固定が有効にならない

あるサイトを外注でWordPressでデザインを組んでもらって実装していたが、記事リストを表示しているところで、先頭位置固定に設定している記事が、単純に登校日時ソートされて表示されるという不具合が発生したので、その対処方法について記載しておく

元々の実装

外注先から納品されていたphpファイルを覗いてみると、以下のようなコードになっていた

	$posts = get_posts('numberposts=10');
	foreach ($posts as $post) {
		// ここに各記事に対するループするテンプレート
		;
	}

問題はget_postsの仕様にあり

WordPressのドキュメントを調べると、get_posts関数は先頭位置固定を無効にする、ignore_sticky_postsという属性が有効になってしまうということであった
ignore_sticky_postsを無効にするためには、query_postsかWP_Queryを使うことになるが、query_postsの利用は非推奨なので、WP_Queryを使って実装しなおす

WP_Queryでの再実装

WP_Queryを使い、以下のようなループに実装しなおしたところ、問題が解消された

	$the_query = new WP_Query( 'posts_per_page=10' );

	if ( $the_query->have_posts() ) :
		while ( $the_query->have_posts() ) : $the_query->the_post();
			// ここに各記事に対するループするテンプレート
			;
		endwhile;
	endif;

	wp_reset_postdata();

↓↓↓ブログランキングに参加しています↓↓↓

にほんブログ村 IT技術ブログへ

↑↑↑応援よろしくお願いします↑↑↑

■ AD ■

コメントを残す

メールアドレスが公開されることはありません。