blog上野谷根千界隈でまったりと暮らしているWeb系フリーランスの雑記ブログです。Webやフリーランス、グルメなどについてもしゃもしゃ書いてます。Posts」でランキングを表示している箇所が何をやっても「まだデータがありません」になってしまう...!!どうやらこのプラグインは様々な原因からこの事象が発生するようなので、私の場合の原因と解決方法について紹介します。今回は以下の記事を参考にさせていただきました。Posts(以下wpp)は人気記事をサムネイル付きで表示させることができるプラグインです。プラグインインストール後、ウィジェット画面からこのプラグインをセットし、それを呼び出すごとで簡単にランキングを表示することができます。他にもショートコードを用いて固定ページ等に表示させたり、phpに直接書いたりすることもできる優れもの!私の場合、wppを使用して「上位○件の記事からランダムで○件表示」「タグ毎のランキングを表示」を実装しようと思い、phpコードでwppから出力された記事をquery_postsで取得する、という使い方をしようとしていました。2本番環境へ反映、という流れで行なっていましたが、実はこの工程中で2回この事象にぶつかりました。初めは1ローカル環境での構築中、インストール当初から発生。wppはアクセスしたら即時そのデータが反映するはずなのに、いくらたっても「まだデータがありません」と出るため調べたところ、現在のバージョンには動作するのに必要なフォルダが欠けているとのこと。far.になった時の直し方!(2016/11/21)こちらの記事を元に、インストールしてしまった最新版のwppを削除し、そのフォルダを保有している古いバージョンをインストール。ちなみにver.2.1.4以前が必要という記事が多かったのですが、こちらの記事にある通りver.2.3.7でも問題ありませんでした。́∀`)それからローカル環境での構築中は、特に問題なく動作していました。本番環境で再び発生ローカル環境での構築・検証が終わり、いざ本番環境へ。上記経験から、最初から古いプラグインをダウンロードし、すぐに最新版にアップデートしました。本番環境の構築が終わり、テストデータを入れ、ぽちぽちと投稿ページをアクセス...ところがまた「まだデータがありません」と表示されてしまう!!設定>wppの統計情報を[全期間]にして確認しても「まだデータがありません。」と表示されるので、出力に問題があるのではなくそもそも情報の取得が上手くいっていないようでした。ローカル環境と本番環境、違いは本番環境全体(サイトのルートパスから)に丸々かけていたbasic認証くらい。ある記事を参考にさせてもらい、ひとつひとつ確認しましたがなかなか該当するものが見つかりませんでした。最終的に該当したのはこちら。原因はヘッダーに「wp_head()」を記述していないことでした。?>を書くことでWordPressにインストールしたプラグインのCSSやJSファイルを自動的に読み込んでくれているようです。Postsで人気記事が表示されなかった理由(2015/11/7)wp_head()?そういえば制御しづらいからと最初の段階で削除して、デフォルトの中身をheader.phpに直書きしてたような...(゚∀゚)!!?試しにwp_head()を書いてみると、最初に削除を判断した時よりたくさんのプラグイン関連のcss、jsがでてくるでてくる。その中にwwpとコメントされているscriptを発見しました。?>に置き換え、まるっとheader.phpに追加。ページを遷移していくと、ちゃんとリアルタイムでランキングに反映・変動していくことが確認できました!2017/7/28追記しばらくしてまた取得できなくなったので確認したところ、tokenはサイト毎の文字列ではなくブラウザやアクセス毎に変わる文字列だったようです。結局、出力制御をfunctions.phpに記述し、上記script文を消してwp_head()をいれることで解決しました!wp_head()の出力制御で参考にさせて頂いたサイトはこちら。今回オリジナルテーマ作成が初だったので知りませんでしたが、wp_head()とwp_footer()は独自テーマだからといって抜いてはいけないもののようですね。「wp_head()からいかに不要な情報を抜くか」という記事が多いので消しちゃえばいいのに!という動機による犯行でしたが、そういう記事が多いということはそれだけwp_head()を書く必要があるということですね...考えが至らなかった今回はscriptだけ追加し、結局wp_head()を使ってませんが、wordpress本体や他のプラグインのアップデートによって同原因による不具合が発生する可能性は多いにありそうです。wp_head()に変更しました。wordpressのオリジナルテーマを作成している人にとっては常識なんだと思いますが、初心者の方は構築からしっかりwp_head()、wp_footer()を含めた設計をすることを心がけましょう(戒め)ちなみに上記scriptを追加して解決!となりましたが、wp_head()を書いていないのはローカル環境でも同じこと。問題なく統計情報がとれていたのは全く不明です。wp_head()が書いてない場合100%起こるという訳じゃないかもしれませんね。WORDPRESS(13)Profilekatori在宅フリーランスのWebデベロッパー(フロントエンドエンジニア、コーダー)です。東京の上野谷根千界隈でまったり仕事してます。