【WordPress・WP_Query】おすすめ関連記事が、いつも同じものしか出ません→パラメーターorderbyに『rand』でランダム表示

      2634文字

今回は、管理人が自分で改造したテーマで発生したトラブル(?)について、対処した方法を紹介します。内容は『おすすめ関連記事が、いつも同じものしか出ない』。ランダムでいろいろ表示とかできないものでしょうか?

少しお仕事でデータベースの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の指定や、文字列型/数値型の考慮も必須)』

表示例:読み込みごとに、ランダムで違う記事が関連に出るようになる


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でとる、みたいなお仕事時に調査して、気づくことができました。いやーお恥ずかしい(笑)

おまけ:WP_Queryクラスなどを使った、WordPressカスタマイズ

今回の例のほかにも、当サイトではWP_Queryクラスなどを使ったカスタマイズ事例を紹介しています。興味がありましたら、こちらの記事もご確認ください。

あとがき・まとめ

  • WPおすすめ関連記事が、パラメーターがデフォルトだと、順番が固定される
  • パラメーターorderbyに『rand』だと、ランダム表示が可能
  • WP_Queryパラメーターorderbyと、MySQLデータベースのORDER BY句は異なるので、混同に注意

まとめると、このような形でしょうか。WP_Queryに渡すパラメーターには、いろいろなものがあるので、サイトの状況に合わせてチョイスしていただければと思います。

WordPressサイト制作&リニューアル・機能開発サービス | アトリエSS


【カテゴリ】 - サイトエラー対策と復旧(wp/php/css)
【タグ】 - , ,

  関連記事

【WPテーマ不具合修正】Clarina(親llorix-one-lite)で、ブログ更新情報タイトルが二回出るのを直す
【wordpressエラー原因】Parse error: syntax error画面真っ白は、プラグインorサーバーのPHPバージョンが合わない
フラッシュ形式のオーディオ・動画プレイヤーが表示されません(Adobe Flash Player終了)
【WordPress】PHPバージョン、いきなり変えて大丈夫?不安なら公開前にローカルテスト
MySQLデータベースからWordPressテーマ変更・プラグイン停止を行う方法【エラー・管理画面に入れないときに】
【WordPress】記事一覧にアイキャッチ画像が表示されません→150サムネが無いのに、the_post_thumbnailで指定されていました
【WordPress】ヘッダーに『” />』みたいな謎の記号が出るんですが?→固定ページ抜粋?・対処法も紹介
WordPressテーマインストール時、エラーで画面真っ白を復旧させた方法(unexpected T_FUNCTION)
WordPress構成ファイルのxmlrpc.phpを無効化する方法【実は攻撃されやすい】
【WordPress】人気ブログランキング、新着記事が取得できない→フィード出力で解決・ブログ村は問い合わせ
【PageSpeed Insightsエラー】リクエストしたページを Lighthouse で正確に読み込めません→WPでメンテにしてました
【wpプラグイン】コンタクトフォーム7の自動返信設定と、なぜか発生した文字化けの対処