経緯をまとめます
8月30日だったか31日だったかに、WordPressプラグイン「WordPress Popular Posts」のアップデート通知が来たことが、そもそもの発端でした。
アップデート後、以下のような現象が次々と発覚。
→「設定」の中に移動されていた
・記事の本文以下が表示されなくなっていた
→プラグインをオフオンすることで解決
・管理画面のヘルプが正常に表示されない
→日本語化したせいかも? 原文が変更された?
上記のような現象があり、数日前に以下のエントリーを書きました。
その後、ブログを読んで下さった方から以下の貴重な情報を教えて頂きました。
アップデート後、固定ページもランキングに含まれるようになってしまったため、「pages=0」というパラメーターを「post_type=post」に差し替えると固定ページが対象外になって改善された
↑という内容でした。教えて頂いた方、ありがとうございました。お礼のメールを送ったのですが、アドレスが違ってたのか送信エラーになったため、こちらにてお礼申し上げます。
「pages」と「post_type」の関係が謎だった
分からない方に上の内容を補足すると、私のブログの右サイドバーでは現在、月間とデイリー、2種類の人気記事ランキングを表示させてます(現状スマホからは見えません)。
プラグイン「Wordpress Popular Posts」の標準機能を使えば簡単に人気記事ランキングのウィジェットを作成できちゃうのですが、私は勉強も兼ねて標準機能ではなくオリジナルのコードを書いて作成しました。
コードの作り方は、以下のエントリーに書いてます。
情報を教えて下さった方は、上で紹介した私のエントリーを参考にオリジナルのウィジェットを作成されていたようなのですが、プラグインのアップデート後に「私のコード」では固定ページもランキングに含まれるようになってしまった、と。
で、固定ページをランキングに含めるか、含めないかを指定する「pages」というパラメーターを、「post_type」というパラメーターに差し替えたところ、エラーが取れたという内容でした。
私は「post_type」というパラメーター指定を知らなかったので調べてみたところ、どうやら投稿タイプを指定するパラメーターだ、というところまでは分かりました。
しかし管理画面のヘルプがアップデートにより上手く表示されなくなってしまい、パラメーターの詳細も表示されなくなってしまって困った…。ネットで調べても判らない。
「pages」を「post_type」に差し替えればいいのか、それとも2つを共存させても問題ないのか、そこが謎でした。
当ブログは固定ページのアクセス数がランキング圏内に入るほど多くないので検証することが出来ない…。ひとまず私のブログでは「pages」と「post_type」の両方を指定したまま様子を見ることにしました。(問題なく動いてました)
今日、再びアップデート通知が来て、謎が解けた
今日(9月4日)、再び「Wordpress Popular Posts」のアップデート通知が届いてました。
前回のように「アップデート後、記事がエラーになって表示されない」なんてことのないよう、アップデート後すぐプラグインを停止→有効化という手順を踏んでからブログを確認したところ、問題なくランキングは表示されてました。ひと安心。
「Wordpress Popular Posts」の管理画面でFAQを表示させたところ、8月末のアップデートを機に表示のおかしくなってたFAQが(英語でしたけど)表示されていました。どうやっても表示できなかったパラメーター解説一覧も表示されている。
その解説一覧をジックリ見て、気付きました。
「pages」パラメーターが消えてる。
つまり、アップデートにより仕様が変わったのか、「pages」というパラメーターが存在しなくなったようです。
さらに、「post_type」の詳細な解説もようやく分かりました。
↑これが「post_type」の解説です。投稿タイプを指定するパラメーターで、指定内容としては、
・page … 固定ページ(ページ)
・(カスタム投稿タイプの名前)
の3種類があるようですね。
「カスタム投稿タイプ」はWordPressの機能で、独自の投稿タイプを作って自分で好きな名前を付けることが出来るので、その名前を「post_type」で指定することでランキングに含めることが出来るみたいです。
「投稿」だけをランキングに含めたい時は「post_type=post」と書く。
「投稿」も「固定ページ」も両方ランキングに含めたい時は半角カンマで繋げて「post_type=post,page」と書けばいいみたいです。
ここで注目すべきは省略時のデフォルト。つまり「何も指定しなかった時の初期値」のところ。
解説をよ~く見ると「post,page」と書かれてる。これで謎が解けました。
「pages」パラメーターがなくなってしまったのと、「post_type」パラメーターに何の指定もしてなかったため、初期値として「post,page」だと判定されてしまい、これによって固定ページもランキングに含められてしまった、というのが真相のようです。
固定ページをランキングに含めたくないのであれば、明示的に「post_type=post」という指定を追加してやらないといけない、ということになりますね。それに「pages=0」という指定はもう意味がないので削除すればいい。
ということで、
↑今回の件を踏まえて、上のエントリーはサンプルコードや解説を変更しています。
上のエントリーを参考にして頂いてランキング用のコードを作成された方、あるいは「pages」パラメーターを使用して固定ページがランキングに表示されるようになり困ってらっしゃる方は、「pages」を「post_type」に差し替えることで解決します。
ひとまず謎が解けてホッとしました。以上です。