へっぽこコーダーの備忘録

phpやらjavascriptやら、使った技術をすぐに忘れちゃうから、おぼえがき程度に書いていきまーす
2017.12.26

WordPressの投稿内の文字列をphpMyAdminで一括置換したい!

Wordpessで投稿内容を書き換える場合に、同様の書き換えが複数ページあると、1記事ずつ修正していくのは大変ですよね。
もしそれが100記事くらいあったら何時間掛かるのって話です。

そこでデータベースから一括置換をしてしまえば楽じゃない!?っていうときの作業手順です。

phpMyAdminを使っちゃおう

データベースから一括置換するにしてもサーバに入ってコマンド操作で置換するってなると、ややこしそうだし怖いから、ちゃちゃっとphpMyAdminを使っちゃいましょう^^

置換の手順

まずは、phpMyAdminにアクセスしよう!

phpMyAdminは、レンタルサーバーを使用している場合だと、大体サーバのコントロールパネルからアクセスできるようになってるから、コントロールパネルを調べてみましょう。

ちなみにsakuraサーバーやX-serverはわかりやすく使用出来たけど、お名前.comのサーバーは標準ではphpMyAdminは使えなかった気がします。
お名前.comは自分でphpMyAdminをインストールする必要があった気が。。。

クエリ操作の画面を表示

phpMyAdminにログインしたら、メインカラムの上部タブ「SQL」を選択しましょう。
クエリを入力するフォームが表示されます。
クエリ入力画面

置換のクエリを入力

置換のクエリは以下のようになります。

UPDATE テーブル名 SET カラム名=replace(カラム名,'置換前','置換後') 

置換の例

具体的な例をあげます。
例えば、投稿に以下のようなコードが含まれているとして、

<div class="thisYear">今年</div>

年が変わったから「今年」ではなく「昨年」に変えたい場合、
以下のコードに変更するとします。

<div class="lastYear">昨年</div>

その場合だとクエリはこのようになります。

UPDATE wp_posts SET post_content = replace(post_content, '<div class="thisYear">今年</div>','<div class="lastYear">昨年</div>')

わかりやすくタグも含め丸ごと置換対象として書きましたが、不要な箇所を除けばこんな感じです。

UPDATE wp_posts SET post_content = replace(post_content, '"thisYear">今年','"lastYear">昨年')

データベースの「wp_posts」テーブルの「post_content」カラムに含まれる「”thisYear”>今年」を「”lastYear”>昨年」に置換するという意味合いですね☆

上記の感じでクエリを入力し、「実行」ボタンを押せば、置換は完了です^^

まとめ

データベースからの一括置換ができると、いざというときの修正作業などがかなり短時間で完了しますね^^
もちろん、先ほど紹介したコードのテーブル名やカラム名を変更することで、投稿以外のデータでも置換処理を行なうことができます。
データベースを触るのはリスクが大きいのでちょっと怖いですが、いざというときに使い方を知っておくと非常に便利です。
ただ、操作を行う前には、ちゃんとデータベースのバックアップを取っておくようにしましょう^^;
ちなみに、phpMyAdminでは正規表現を使用した置換はできないみたいです。