WordPressのメディアや記事全文の文字を置換して日付も更新するSQL

PHPMyAdmin WordPress 全文置換
使わないと損をする最強海外FXキャッシュバックサイトTariTali
最強キャッシュバックサイトTariTali
Taritaliは1lotにつき最大9ドル還元
損切りやゼロカットをしても資金が残ります

プラグインSearch Regexの弱点

管理画面から記事やメディアの文字列の置換ができるSearch Regexですが、なぜかメディアの代替テキスト(ALT属性)は置換できるのにタイトルは置換できないと言う問題があります。

タイトルは訪問者からは見えないのでどうでもいいと言えばいいのですが、個人的には代替テキストと統一されないのがどうも気になりました。

また、置換を行っても記事の更新日時は変更されないと言う弱点もあります。

SQL文で記事、メディア全てを置換して更新日時も書き換える

PHPMyAdmin WordPress 全文置換

XServerやさくらサーバー、その他VPSなどでWordPressを運営されている方ならPHPMyAdminやAdminerでデータベースを直接変更可能なので、SQL文で書き換えるのが確実です。

当然ですが、置換を実行する前に必ずデータベースのバックアップを取ってください。

当ブログは仮想通貨取引所やFX業者の名前を分かりやすいと思って全てカタカナで表記してきたのですが、スマホから見た時に文字数が多くて邪魔になるのではないかと思い、置換を行うことにしました。

SQL

SET @TARGET = 'エックスエム(XM)';
SET @REPLACE = 'XM(エックスエム)';

UPDATE wp_posts
SET post_title = REPLACE(post_title, @TARGET, @REPLACE)
WHERE post_title LIKE CONCAT('%', @TARGET, '%');

UPDATE wp_posts
SET post_content = REPLACE(post_content, @TARGET, @REPLACE)
WHERE post_content LIKE CONCAT('%', @TARGET, '%');

UPDATE wp_posts
SET post_modified = NOW(),
post_modified_gmt = UTC_TIMESTAMP()
WHERE post_type = 'post' AND
post_status = 'publish' AND
post_content LIKE CONCAT('%', @REPLACE, '%');

UPDATE wp_postmeta
SET meta_value = REPLACE(meta_value, @TARGET, @REPLACE)
WHERE meta_key = '_wp_attachment_image_alt'
AND meta_value LIKE CONCAT('%', @TARGET, '%');

@TARGETは置換したい文字列、@REPLACEは置換後の文字列を設定します。

MySQLの正規表現を使えばさらに高度な置換ができますが、当ブログの場合は完全一致の単純置換でほとんど済みました。

あとからこう言う変更があるとかなり面倒なので、ブログ立ち上げ前に単語の規則性はキチンと決めておいた方がいいですね。

使わないと損をする最強海外FXキャッシュバックサイトTariTali
最強キャッシュバックサイトTariTali
Taritaliは1lotにつき最大9ドル還元
損切りやゼロカットをしても資金が残ります