今日、後輩から
「wp_postviewsが動かないんだけど、原因がわかんないんですよねー・・・」
って聞かれて、調べていました。
wp_postviewsは、ポストを人気順に表示したりするプラグインですが、設置して有効化するとviewsというカスタムフィールドを作って、ページが見られるたびに数値を加算していきます。で、普通に設置したけどページを見ても値が加算されないし、そもそもカスタムフィールドが作られない。
昔からあるプラグインだから、WP側が最新バージョンだとだめなのかもと思ったのですが、WPのプラグインページで調べてみたところ問題無し。
しょうがないからプラグインの中身で値の流れを追っていったのですが、流れとしては、ポストが公開されたタイミング、または更新されたタイミングでそのポストにviewsというカスタムフィールドを作り、サイトに表示されたタイミングで値を加算するという流れらしい。
で、あちこちechoして調べていたらまずpost_idが取れていないことがわかりました。ならpost_idはどうやって取っているかというと、ヘッダにJS仕込んで、そいつからGETで値を受け取っている模様。
そのJSを仕込むタイミングが、wp_head()が呼ばれるときなのですが、この後輩が今回テンプレをスクラッチでゼロから書いたので、wp_head()を書いていなかったもよう。
wp_head()はwpの諸情報を埋め込む関数で、テンプレ的にはだいたいhead部分に埋め込んでバージョン情報とかを表示する感じですが、それがプラグインのフックとして使われていることも多く、有名どころではAll in One SEOとかもwp_head()が無ければうまく動きませんね。
同様な関数でwp_foot()とかもありますが、Syntax Highlighter Compressなんかはこれでjsをフッタに埋め込むので、書かないとこれまた動きません。
ってことで、不要かと思われるちょっとした記述もいろいろと影響出ちゃうことがあるので、要注意ですねー、ってお話でした。かしこ。