見出し画像

「wp-webclap」から「まろやか拍手」へのデータ移行


Web拍手をご存じでしょうか?

記事の最後に拍手ボタンを置いておくと、その記事を気に入ったひとがクリックしてくれるという、書き手の自己満足度をあげてくれるツールです。

古いサイトでずっと使いづけていてた「wp-webclap」というプラグインがあるのですが、とうとう最新のWordPressで動かなくなりました。(最終更新日が8年前なので致し方ない。本当はセキュリティが危ないのでもっと早く対応しないといけなかった)

そこで「まろやか拍手プラグイン」に乗り換えることにしたのですが、「wp-webclap」で集めたデーターを捨てたくない。なにせ10年近く使っていて、そこからメッセージももらっていたりしたので、できるだけとっておきたい。

というわけで「wp-webclap」のデータを「まろやか拍手プラグイン」に移行することにしました。

同じような悩みを持つ方がいるか分かりませんが、実施した方法を説明します。


まずはテーブル構成をチェック

wp-webclap側のテーブルは以下の2つ

「wp_webclap」は記事IDごとに、拍手ボタンを表示するか、ボタンに表示させる文字はなにか、という設定情報が入っているようです。これは移行には関係ないですね。

本データは「wp_webclap_comments」に入っています。

まろやか拍手側のテーブルは以下の3つ

「wp_mwc_id」はおそらく集計表示用だと思いますが、記事IDごとの拍手数合計と記事名がはいっています。

「wp_mwc_clap」に基本のデータが入っていて、拍手された記事ID、拍手したひとのIP情報、時間帯などが格納されています。「wp_mwc_messages」にはそれに紐づく名前やメッセージ等の情報がはいっているようです。


ソースを確認する

「wp_mwc_clap」と「wp_mwc_messages」テーブルの関係性が分からなかったのですが、プラグインのソースを見たところ、どうやら「wp_mwc_clap.clap_id」と「wp_mwc_clap.id」で繋がっているようです。

maroyaka-webclap-for-wordpress > admin.php

データ移行用のSQLを発行してデータを移行する

上記を踏まえ、まろやか拍手の3つのテーブルにデータを移すためのインサート文を3つ、実行しました。

INSERT INTO wp_mwc_clap (
 id,
 post_id,
 ip,
 timestamp
)
SELECT
 clap_id,
 post_id,
 ipaddress,
 clap_datetime
FROM wp_webclap_comments

「wp_mwc_clap.id」に「wp_webclap_comment.clap_id」を設定するのがポイントです。これをしないと「wp_mwc_clap」テーブルと「wp_mwc_messages」テーブルが紐づきません

INSERT INTO wp_mwc_messages ( 
 clap_id,
 name,
 message
) 
SELECT
 clap_id,
 clap_name,
 clap_comment
FROM wp_webclap_comments

「wp_mwc_messages.clap_id」には「wp_mwc_clap」テーブルと紐づけるため「wp_webclap_comments.clap_id」を設定します。

「wp_mwc_messages」テーブルには「id」というカラムもあるのですが、ここにはAUTO_INCREMENTが設定されているため何もインサートしていません。

INSERT INTO wp_mwc_id ( 
 post_id,
 count,
 label
)
SELECT
 wp_mwc_clap.post_id,
 COUNT(wp_mwc_clap.post_id),
 wp_posts.post_title
FROM wp_mwc_clap 
LEFT OUTER JOIN wp_posts
ON wp_mwc_clap.post_id = wp_posts.ID
GROUP BY wp_mwc_clap.post_id

上記2つのSQLを発行したあとに、集計用としてこのSQLを発行しました。「wp_mwc_id」テーブルにも「id」というカラムがありますが、同じくAUTO_INCREMENTが設定されているため何もインサートしていません。


結果

ちゃんと動きました!!!!

いつどの記事に拍手とメッセージがあったか、拍手の多い記事はどれかなどの情報がわかるようになっています。

「まろやか拍手」にある過去の年別、月別などの拍手数集計機能はおかしくなっている(データがないように見える)のですが、まぁそれはいいかな。

真似する方は自己責任で、DBのバックアップをしてからやってくださいね。


この記事が気に入ったらサポートをしてみませんか?