WordPressのプラグインで、記事やタイトルから指定の文字を見つけて、置き換えるプラグイン「SearchRegex」を使ってみました。
タイトルの特定の文字を置き換えたい
Googleとかの検索結果のタイトル部分には「○(丸)」や「□(四角)」などの記号が表示されません。
具体的にはタイトルに「ビックリだわ!Σ(゚□゚)o゙」とか書くと、「ビックリだわ!Σ(゚゚)o゙」って表示されてしまいます(^-^;
…置き換えしたい!Σ(゚ロ゚)o゙
とりあえず思いつくのが、DB(データベース)の管理画面「phpMyAdmin」から、SQLで文字の置き換え。
wp_postsの、post_titleの、「□(四角)」を、「ロ(ろ)」に、updateで、setで、もにょもにょ…とか考えていたものの…。
便利な文字列置き換えプラグイン「Search Regex」がありましたΣ(゚ロ゚)o゙
プラグインをインストールする
- WordPressダッシュボードの「プラグイン」から「新規追加」を選びます。
- 検索ボックスに「search regex」と入力する等して、「Search Regex」を探します。
- [いますぐインストール]を押して、インストールします。
- インストールの確認が来たら[OK]を押します。
- 「有効化」して、インストールは完了です。
- 「プラグイン」の「インストール済プラグイン」の一覧に表示されます。
さっそく置き換え!…その前に
予想外の置き換えを行ってしまったり、何かトラブルが発生してデータが壊れてしまう可能性があります。
事前にデータベースのバックアップを取るようにしましょう。
ただ、バックアップは取っても、いざとなった時に戻せないのではバックアップも意味がありません。
バックアップ手順と、リカバリー手順をセットで調べておきましょう。
WordPress標準の、コンテンツ全体のエクスポートとインポートが一番簡単だと思います。
文字列の置き換えをしてみる
- WordPressダッシュボード の「ツール」から「Search Regex」を押します。
- 「source(ソース)」を選びます。タイトルから検索する場合には「Post title」、記事の内容から検索する場合には「Post contents」を選びます。
- 「Search pattern」に「探す文字列」を入力して、[Search ≫]を押すと文字列検索がされます。置き換わる対象になります。
- 「Replace pattern」に「置き換える文字列」を入力して、[Replace ≫]を押すと、「Search pattern」で検索した文字列を、「Replace pattern」に置き換えた結果が表示されます。更新は行われません。
- 置き換え結果が良さそうであれば、「Replace & Save ≫」を押すと、実際に検索→置き換え→更新が行われます。(安全のため、データーベースのバックアップ等を取っておきましょう)
「買ってみた」を「買ってみました」に置き換えたい場合などに、普通に「買ってみた」→「買ってみました」に置き換えてしまうと、「買ってみたいです。」という文があった場合に、「買ってみましたいです。」のように置き換わってしまいます。
置き換えしたい文字列をそのまま入力するのでは無く、「買ってみた。」→「買ってみました。」のように、前後の句読点もまきこんで置き換えるクセを付けましょう。
タイトルが置き換えできない?
実は、何度試してもタイトルの文字列が「検索」出来ませんでした。
検索出来ないという事は置き換えが出来ません。
特に今回は記事の内容というよりも、タイトルの文字列置き換えが目的なので困りました。
調べてみたところ、不具合のようで、修正方法がありました。
こちらにある通り、「search-regex/searches/post_title.php」を編集したところ、ちゃんとタイトルも検索、置き換えが出来るようになりました。
正常に検索できている「post_excerpt.php」と見比べてみると、「LIMIT」の指定の部分に不具合があったようです。
$posts = $wpdb->get_results ($wpdb->prepare( "SELECT ID, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' ORDER BY ID $orderby LIMIT %d,%d", $offset,$limit ) );
「Limit to:」に「No limit」を指定した場合、SQL文が完成していなかったようです。(「10」とか「100」とか選んでも、結果が今ひとつおかしい気がします。offsetいくつなんだろう?)
10行目のSQLは、パラメータを指定しなくするので、「$wpdb->prepare(」と閉じの「)」を除外。
11行目に「Limit to:」が指定されていたら、LIMITパラメータを追加させる行を追加します。(件数制限しないなら10行目の変更だけでも良いかも知れません)
$posts = $wpdb->get_results ("SELECT ID, post_content, post_title FROM {$wpdb->posts} WHERE post_status != 'inherit' ORDER BY ID $orderby" ); if ( $limit > 0 ) $sql .= $wpdb->prepare( " LIMIT %d,%d", $offset, $limit );
※この修正は「Search Regex」のバージョン1.4.15 で確認しています。
※以降のバージョンでは行数や内容が変更される可能性があります。
検索にちゃんと表示されるようになりました
「Σ(゚゚)o゙」と表示されていた顔文字は、正常っぽく表示されるようになりました。
記事内に書かれている、サイト名やURLを一括置き換えしたり、壮大な誤字を修正したり。
あるいは検索機能だけ使用して、自分のサイト内に特定の単語がいくつくらいあるか集計したりするのにも使えそうです。
コメント
[…] [WPプラグイン]記事やタイトルを一括置換する「Search Regex」を使ってみたWordPressのプラグインで、記事やタイトルから指定の文字を見つけて、置き換えるプラグイン「SearchRegex」を使って […]