【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

thumbnail SQL(phpMyAdmin) wp-note

phpMyAdminのSQLクリエ(Query)を利用して必要なカラム(列)のデータだけを探し出して表示し、それをCSV形式でエクスポートしてみました。

 

前置き

ランキングを自作したのでphpMyAdminでワードプレスで人気記事のランキングを作成するプラグイン「WordPress Popular Posts(以後、「wpp」と略)」の特定のカラム(列)のデータだけ抜き出したかったんですが、「SQLクエリ(Query)」を使わないとできないみたいなので諦めて一旦、テーブルごとエクスポートしてエクセル等の表計算ソフトで修正してやろうと思いました。

ただ、エクスポートしたCSVファイルの容量が約60MBあって表計算ソフトがフリーズして全く開けない状態に陥ったのでやはり「SQLクエリ(Query)」でやることにしました。

 

 

wppの「pageviews」と「post_id」データをCSV形式でエクスポートする

wppはページがアクセスされるたびにそのデータを「wp_populardata」というテーブル(表)の「pageviews」という項目(列)に保存されているのでそちらのデータを抜き出します。

phpMyAdminにログインします。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

エックスサーバーの場合はアカウントにログインして「サーバー管理」→「サーバーパネル」→「データベース」という項目にあり、そこからログインします。尚、phpMyAdminにログインするにもパスワードが必要なので詳しくはマニュアルで確認してください。

phpMyAdmin

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

取り出したいデータの入っているデータベースのテーブル(エクセルの表みたいなもの)でwp_popularpostdataを選択し、SQLタブを開きます。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

たぶん、SELECT * FROM ‘wp_popularpostdata’ WHERE 1と命令文が記載されていると思いますが意味は以下のような感じです。

  • 「SELECT」は検索して表示(抽出)するという意味
  • 「FROM」はどのテーブルかを指す
  • 「アスタリスク(*)」は「すべて」の意味
  • 「WHELE」は「どこのレコード(行)から取得するか」という意味で「1」は「真実(true)」なので「WHERE 1」はすべての場所を意味し、実はWHEREを記載せずに実行するSELECT文と同じ結果になる

このまま実行ボタンを押すと’wp_popularpostdata’に入っているデータがすべて表示されます。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

postidとpageviewsしか必要ないので命名文を消し、下記の3パターンのいずれかの方法で書いて実行ボタンを押します。※ 表示されている命名文は「クリア」でも消せます。

SQL
SELECT `postid`, `pageviews` FROM `wp_popularpostsdata`
SELECT postid, pageviews FROM wp_popularpostsdata
SELECT 
     postid,
     pageviews
FROM
     wp_popularpostsdata

意味は「wp_popularpostsdata」というテーブル(表)から「postid」と「pageviews」という列のデータを探して表示するという感じです。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

入力した命令文に間違いがなければデータベースの指定したテーブル内のカラム(列)データが表示される筈です。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

下部にスクロールするとクエリ結果操という項目にエクスポートという項目があるのでそちらをクリック。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

エクスポート方法で「詳細 – 可能なオプションをすべて表示」、フォーマットを「CSV」、フォーマット特有のオプションを「1行目にカラム名を追加」にチェックして「実行」ボタンをクリックします。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

表計算ソフトで開くとちゃんとデータを必要なデータだけを取り出せていました。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

 

 

取り出したデータを別のテーブルに差し込む

ワードプレスのカスタムフィールドのデータは「wp_postmeta」というテーブルに保存されているので取り出したデータを「wp_postmeta」に差し込むんですが、テーブルの構造が異なるとエラーで差し込めないみたいなのでまずテーブルの構造を確認します。

 

インポートするテーブルの構造にする

テーブルを選択して「表示」や「構造」メニューからそのテーブルの構造を確認できます。下図は「表示」メニューです。

「wp_postmeta」はmeta_id, post_id, meta_key, meta_valueという4つの項目の列(カラム)で出来ているのが分かります。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

また「wp_popularpostsdata」は「postid」と「pageviews」で出来ているのでCSVで取り出したデータを表計算ソフトで開いてテーブル構造が同じになるように修正します。

meta_id    → 新規作成
postid       → post_idに改名
meta_key  → 新規作成
pageviews → meta_valueに改名

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

meta_idは空のままでいいんですがmeta_keyの項目にはpost_views_countと入力してカンマ区切りCSVで保存します。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

この時にUTF-8(BOMなし)にしていないと「CSV 入力のカラム数が不正です (行: 1)」などのエラーが出ることがあるようです。詳しくないですがUTF-8(BOMあり)には見えないデータが記載されているみたいなのです。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

UTF-8(BOMあり)の表記方法はテキストエディタにより違いがあるのでそこは注意が必要です。

エディタによる表記の違い

メモ帳・・・UTF-8
TeraPad・・UTF-8N

表計算ソフトで保存時に文字コードを選択できない場合は、メモ帳で一旦開いてステータスバーに「UTF-8」となっていればOKです。尚、文字コードが変更できるのはWindows10 19H1以降に搭載されているメモ帳です。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

もしなってなければファイルメニューから文字コードを「UTF-8」にして上書き保存します。

例では「wpp_pv_data.csv」としておきます。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

 

CSV(データベース)のインポート

「wp_posts」を選択した状態で「インポート」メニューを選択し、アップロードファイルに先ほど保存した「wpp_pv_data.csv」を指定すると自動的にフォーマットが「CSV」となります。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

ほかにいろいろと項目がありますが下図のようになっていればそのほかの項目はデフォルトのままでOKだと思います。

特にフォーマット特有のオプションにある「Update data when duplicate keys found on import (add ON DUPLICATE KEY UPDATE)」は重複するデータがあった場合には上書きする項目みたいなのでチェックを入れずに行いました。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

データを差し込むとpost_idは重複する可能性があり、重複した場合にはmeta_idに自動的に番号が振り分けられるようです。

「インポートは正常に終了しました。」となればOKです。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

ちゃんと書き込まれているか確認したところ、重複するpost_idには上書きされずに自動的にmeta_idが割り当てられて問題なくインポートできているみたいです。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

データの移行後にちゃんと人気ランキングが表示されていました。

【SQL】WordPress Popular Postsのアクセスデータを取り出して自作の人気ランキングに取り込む

 

参考サイト

 


コメントはお気軽にどうぞ

メールアドレスは公開されません。

尚、スパムコメント対策として海外のIPアドレスからのコメントは受け付けないようにしています。そのような場合にはお問い合わせフォームよりご連絡下さい。

内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。
* が付いている欄は必須項目です。