query_postsを使ったらwp_reset_queryでリセット

wordpressにhtmlを知らなくても、
固定ページから変更するだけでサイドバーや、
トップページを変更できるように

<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php endwhile; endif; ?>

を使って固定ページにつけたスラッグを呼び出すようにしたところ、
思い通りに出来たのですが、
今度は全ページにのリンクもこちらに引っ張られるようになりました。
色々と調べたところ

この関数は、WordPress ループ を query_posts() で変更したカスタムループのクエリをリセットし、元の WordPress ループ のクエリに戻します。カスタムループの後では、条件分岐タグを期待通りに動作させるために、必ずこの関数を呼び出してください。

とありました。
一回ページに呼び出したところループになっていて、
どのリンクをたどっても呼び出したページが出ちゃうんですね。
なのでリセットしないといけないらしいです。
で結局最後書いたのがこれ。

<?php if(is_home()); ?>
<?php query_posts('pagename=xxxxx'); ?> //xxxxxにページのスラッグを書く
<?php if(have_posts()):
while(have_posts()): the_post(); ?>
<h2><?php the_title(); ?></h2>
<?php the_content(); ?>
<?php endwhile; endif;
wp_reset_query(); ?> //ここでリセット

あとはcssで整形して終わり。
備忘録として残しておきます。
誰かのお役に立てれば幸いです。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

パソコンとネットの何でも屋さん兼農家見習い中
2021年に奥さんに腎移植して人生の価値観が大きく変わりました
何が起きても諦めずに生き抜く力が一番大切
時々ブログも書いてます

目次