:: wordpressのwp_postsに登録されている記事の一部のテキストを一括で変更する方法 MYSQL

/ , / WEB制作・開発

WordPressで投稿している記事の特定の文字列を一括で変更する方法をメモ。まだブログを公開して間もないウェブサイトであれば1ページずつ編集するのも一つのやり方だけど100ページとかあったら結構大変ですよね。そこで調べたら一瞬で対応できました。

 

やり方はなんてことはない、wp_postaテーブルのpost_typeに対してREPLACEを使います。
Wordpressでよくあるディレクトリの階層構造を変更する時をイメージすると分かりやすいかも。

ディレクトリ

変更前↓↓
/user/local/apache/htdocs/grooving-earth

変更前↓↓
/user/local/apache/htdocs/grooving-earth/wp

 

wpというフォルダを1つ作りました。(複数のサイトを運営されている方はよく使うと思います。)
上記のようにディレクトリを変更したことに伴い、テンプレートと記事、ページのデータに書かれている画像パスなどを変更しなければなりません。

(一般的にはsearchreplacedbというファイルを使うことで簡単にできます。こちらの使い方はたくさんのブロガーさんが分かりやすく説明されているので割愛します。)
https://interconnectit.com/products/search-and-replace-for-wordpress-databases/

とりあえずテンプレートはさておき、記事と固定ページの一括置換方法はSQL構文を使うと簡単にできます。
以下を確認してください。Databaseをよく知っている方ならとっても簡単だと思います。

 

UPDATE文を使っています。2行目のpost_content=REPLACE(post_content, ‘grooving-earth/wp-content/’ , ‘grooving-earth/wp/wp-content/’)の箇所で一括置換をしています。
“grooving-earth/wp-content/” → ”grooving-earth/wp-content/wp/”
 に変換しています。

 

なお、Wordpressの場合は、PostsもPagesも同じwp_postsのテーブルを使っており、post_typeでページの種類を分けているので、Pagesを変換したい場合は、WHERE post_typeの’post’を’page’に変えてあげればOKです。

 

 

なお、ssh経由とphpMyAdminどちらからでもいけます。

参考にしたサイト↓↓
http://memocarilog.info/wordpress/5789

SNS SHARE

LEAVE A REPLY