海外FXキャッシュバックサイト
海外FX業者はキャッシュバックサイト経由が断然お得
Taritaliは1lotにつき最大9ドル還元
損切りやゼロカットをしても資金が残ります

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

PHPMyAdmin WordPress 全文置換

プラグイン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キャッシュバックサイト
海外FX業者はキャッシュバックサイト経由が断然お得
Taritaliは1lotにつき最大9ドル還元
損切りやゼロカットをしても資金が残ります

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)