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

プラグインSearch Regexの弱点→解消?

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

『絞り込み』から『タイトル』を選ぶことで対応できました。一応この記事は更新日時も更新できるので残しておきます。

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

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

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



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

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

WordPress関連記事



サイトについて

スマートフォンで海外FX&ビットコイン取引をする方法の解説。TariTali推し。

検索

カテゴリー