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();
■ AD ■ | |
---|---|