query_postsを使ってランダム表示一覧で取得したところ、特定のカテゴリー情報しか取得されていなかったので、私と同じような悩みがある人に解決方法をご紹介いたします。
はじめに
まず、私はコピペでしかPHPが理解できない素人です。だから、何故こういった記述だと期待通りの動きをして、この書き方だと期待通りの動きにならないのかが理解出来ません笑
でも、きっと私と同じような悩みを持っている人はいるだろうなと思い、記事にさせて頂きました。
注意事項
query_postsはもう使ってはいけないみたいですね・・・。でも、これを「get_posts」などに変えるほうが良いみたいですが、どないしたらええねん・・・。←「get_posts」のやり方わかったやで!
私が参考にしていたPHP
まず、私がやりたかったのは
- 特定のカテゴリの子カテゴリーを取得する
- 全記事取得する
- ランダム表示させる
この3点です。そこで見つけたコードはこんな感じでした。
<? foreach((get_the_category()) as $cat) { $cat_id = $cat->cat_ID ; break ; } $query = 'cat=' . $cat_id. '&showposts=-1&orderby=rand'; query_posts($query) ; ?> <?php if (have_posts()) : while (have_posts()) : the_post(); ?> <?php endwhile; endif; ?> <?php wp_reset_query();?>
ただ、このやり方をしたら、
Aのカテゴリ情報しか取得されずその他のカテゴリ情報が取得されませんでした。
そこで見つけたのがこの方法です。
この方法だと簡単に取得できたよ
<?php query_posts($query_string .'&showposts=-1&orderby=rand'); ?> <?php while (have_posts()) : the_post(); ?> <?php endwhile; ?> <?php wp_reset_query();?>
私自身本当にPHPに関してはまだまだ勉強中なので何故こうなるのかが理解出来ていませんが、とりあえず今動いているのでこれはこれでよしとしました笑
追記 get_postsでも作れました!
色々なサイトを参考にしながらquery_postsの内容をget_posts用に組み替えてみましたが、そんなに難しくなかったです。
<?php $listposts = get_posts($query_string . '&posts_per_page=10&orderby=comment_count'); if($posts):foreach($listposts as $post) :?> <?php endforeach; endif;?>
たったこれだけです。
もっともっと勉強する事でこういった事がはっきりと分かるようにしたいです。
とりあえず一回category.phpにコピペして、アップしてみればわかると思います。
以上で特定のカテゴリー情報一覧をquery_postsで取得する方法の説明を終了いたします。
さいごに
インターネット上は優しい人達がいっぱい
やっぱり、わからないとgoogle先生に頼る事が増えました。今回は
- ランダムに記事を表示させたい
- コメント数が多い順に記事を表示させたい
など、ワードプレスでこういった表示方法をしたなぁって思っても結局なにをどうすれば良いのかわらからなかったので、色々と検索をして答えを頂きました。
インターネットで情報を公開している人が多くて本当に助かりました。
ただ、今回は色々と初めての試みが多かったのでAのパターンをするとBが動かなくなったり、と試行錯誤の連続でした。
やってみるもんですね。自分でもここまでの複雑?なシステムが作れるのは感動でしたね。