【WordPress・WP_Query】おすすめ関連記事が、いつも同じものしか出ません→パラメーターorderbyに『rand』でランダム表示
| 更新: 2024/02/10 | 2652文字
今回は、管理人が自分で改造したテーマで発生したトラブル(?)について、対処した方法を紹介します。内容は『おすすめ関連記事が、いつも同じものしか出ない』。ランダムでいろいろ表示とかできないものでしょうか?
少しお仕事でデータベースのSQLクエリをやったことがあり、並べ替えなどがあったと思うので、WPにもあるはず、ということで検討してみます。
目次
トラブルというか、気になったポイント→おすすめ関連記事が、いつも同じものしか出ない
しばらくこの機能は放置したので忘れていました(笑)このサイト・読んどけコラムでは、カテゴリー内の関連記事を取得するようになっていました。しかし、『毎回毎回、同じ記事しか出ていない』というのが気になっていました。新しい順番になっていますが、これはデフォルト並びでしょうか。
新記事を追加した場合は、それが一番上に来るようにはなっています。これだと、『過去記事のインプレッション数(表示の回数)』が減ってしまいます。古い順でも良いですが、それでは新着の表示も減ります。『ランダム表示』みたいなのができないものでしょうか。
原因は、WP_Queryに渡す順序のパラメーター『order』
で、新しい順にしか出ない原因については、関連記事表示部分のプログラムを調べてサックリ解決。関連記事の取得部分です。ここで『WP_Queryクラス』に渡すパラメーターorderが『desc』になっていました。これだと降順(新しいほうから降りてくる)になり、デフォルト状態は、この並びになっています。
パラメーター『order』には、他に『asc』を指定することができ、このときは『古いほうから順番に並べる』ことができます。このように昔の記事から順番に出てきます。
対応:パラメーター『orderby』を追加し、『rand』指定するとランダム表示可能
WP_Queryクラスへの渡し方
そこで、WP_Queryクラスに渡すパラメーター『orderby』を追加します。『order』とは別です。このような感じで、渡す変数(ここでは$args)内に記載し、『rand』を指定。
WP_Queryクラスに渡すパラメーター『orderby』に指定できる値は、他にも以下のようなものがあります(よく使いそうなもの、指定できるものはもっとたくさんある)。
- 『ID(投稿id順番)』
- 『name(スラッグ順)』
- 『comment_count(コメント数)』
- 『modified(更新日)』
- 『meta_value(カスタムフィールド・meta_key=keynameの指定や、文字列型/数値型の考慮も必須)』
WP_Quer 順序づけパラメータ
http://wpdocs.osdn.jp/関数リファレンス/WP_Query順序づけパラメータ
表示例:読み込みごとに、ランダムで違う記事が関連に出るようになる
orderbyにrandを指定した例です。まずページをリロードすると、別の記事が出てきます。
もう一回リロードで、また別の記事が表示。『固定で〇〇を見せたい』などのときはidの指定で、いろいろ見てもらいたい(ただし関連するカテゴリ)ときは、rand指定が良いかなと思います。
注意ポイント:MySQLデータベースのORDER BY 句は、DESC/ASC指定ができる点が、WPと異なる
で、注意点です。WordPressでは『orderでDESC/ASCを指定』『orderbyでidやランダム・フィールドなどを指定』という形でした。MySQLデータベースで使うクエリにも似たようなクエリがありますが、混同に気をつけたいところです。
『ORDER BY句』です。MySQLデータベースでは、以下のようにORDER BY句でDESC/ASC(ソート方法)指定します(ORDER BYはキーに対してDESC/ASCも)。
『SELECT * FROM ◇◇(テーブル) ORDER BY 〇〇(カラム) DESC(ソート方法)』
昔(サイト立ち上げ当初)、管理人は混同していたんですけど、データベースとか、WPでもSQLでとる、みたいなお仕事時に調査して、気づくことができました。いやーお恥ずかしい(笑)
MySQL 5.6 リファレンスマニュアル ORDER BY の最適化
https://dev.mysql.com/doc/refman/5.6/ja/order-by-optimization.html
おまけ:WP_Queryクラスなどを使った、WordPressカスタマイズ
今回の例のほかにも、当サイトではWP_Queryクラスなどを使ったカスタマイズ事例を紹介しています。興味がありましたら、こちらの記事もご確認ください。
WP_Queryを使った、WordPressカスタマイズアイデア(一覧)
https://division-web.atelier-ss-agency.com/?s=WP_Query
WordPressのカスタムフィールド値で記事を絞り込み・検索するサイトの作り方・一部始終を徹底解説
https://division-web.atelier-ss-agency.com/7782/how-to-make-wp-field-search-system/
あとがき・まとめ
- WPおすすめ関連記事が、パラメーターがデフォルトだと、順番が固定される
- パラメーターorderbyに『rand』だと、ランダム表示が可能
- WP_Queryパラメーターorderbyと、MySQLデータベースのORDER BY句は異なるので、混同に注意
まとめると、このような形でしょうか。WP_Queryに渡すパラメーターには、いろいろなものがあるので、サイトの状況に合わせてチョイスしていただければと思います。
【カテゴリ】- WordPressファンクションetc
【タグ】- WordPress, データベース