先日テーマを新しいのに変更しました。それで困ったのが見出しタグ。旧テーマでは記事の見出しはh3から始まるのですが、新しいテーマではh2からです。このままではh2が空いてしまい、h1の後にh3では構造が崩れてしまいます。
早急にh3タグをh2に変更しなければなりません。困りました。
でもたくさんの人が使っているwordpressでは、なにか困ったことがあっても、たいてい同じことで困った人が必ずいて、解決方法を教えてくれます。
今回も調べてみたらすでに解決済みで、何人もの人がネット上に解決方法を上げてくださっていました。助かります。
ただ今回は一筋縄ではいきませんでした。ちょっと癖のあるテーマを使っていたせいか、みなさんのやり方では上手くいかず何度か検索を繰り返してやっとできました。忘れないようにメモに残すことにしました。
wordpressを一括変換するプラグイン「Search Regex」
これは、すごいプラグインです。すべての過去記事を対象に文字列を検索して、一括置換してくれるそうです。
見出しタグだけでなく、リンクエラーでリンク先を変更しないといけない時とか、記事の中の文章や語句をまとめて変更したい時とか、アフリエイトコードの変更とか、いろいろ使えて万能です。
Serch Regexのインストールの仕方や使い方は皆さん丁寧に書かれているのでそれを参考に。だいたい3人くらいの記事を見れば完璧だと思います。
私が参考にしたサイト→ Search Regex – データベースの中身を検索&一括置換できるWordPressプラグイン
私が旧テーマで使っていた見出しタグはちょっと変わっていました。<h3 class=”news_headline1″>見出し</h3> こんな感じです。なので、
- 【Search pattern】<h3 class=”news_headline1″>→【Replace pattern】<h2>
- 【Search pattern】</h3>→【Replace pattern】</h2>
と思ったのですが、</h3>は見出しタグだけでなく他のにも使われているので、<h3 class=”news_headline1″>見出し</h3>は、セットで置換しないとまずい事になりそうです。
それで今度はSearch Regexでのh3タグの変換を中心に調べてみました。
参考WordPressで全記事のタグを簡単に一括置換する方法!
見出しタグを変換するには正規表現を使います
セットで検索したり置換するのには正規表現を使えばいいそうです。
- 正規表現
- 「いくつかの文字列を一つの形式で表現するための表現方法」です。では、なぜこの表現方法が有名なのかといえば、この表現方法を利用すれば、たくさんの文章の中から容易に見つけたい文字列を検索することができるためです。サルにもわかる正規表現入門
【Search pattern】 |<h3 class=”news_headline1″>(.*)</h3>|
【Replace pattern】 <h2>$1</h2>
重要なのは(.*)と$1です。
サルにもわかる正規表現入門を参考に調べてみました。
- 「(.*)」は、なんでも良い文字の連続、つまりすべての文字列の意味。開始タグと閉じタグの間はどんな文字でも構わない。
- 「$1」は、置換前の()の中身を表す。()で文字列をグループ化し$1へと変更する。
正規表現って普段は全く使わないので、なんとなくわかればいいと思います。
さっそく変換してみました。ところが大変です。
一つの記事にh3見出しが3つあった場合、最初の<h3 class=”news_headline1″>から、最後の</h3>まで一気に認識してしまうみたいです。途中の<h3 class=”news_headline1″>や、</h3>はお構いなしです。
再度googleで調べてみたのですが、私みたいなエラーになっている人っていませんでした。 |<h3>(.*)</h3>|でうまくいったみたいです。
私の旧テーマはかなり癖の強いテーマなのです。最後の最後まで悩まされます。
サルにもわかる正規表現入門を何度読んでもわかりません。猿以下なのかもしれないと思うと悲しくなってきましたが、もう一度、今度は正規表現を中心にgoogle検索してみました。
そしたらありましたよ。コチラのサイトです。コレだけ知れば十分捗る!「正規表現」たった2つのポイント
正規表現を見直してみる
今度は (.*?) です。ハテナを追加します。ハテナの意味は
・ハテナ = (マッチする終点が複数ある場合)なるべく短いトコで止める。
だそうです。つまり</h3>が複数ある場合、最初の</h3>を選択するということでしょうか。よくわからなくても構いません。ハテナを付け足すだけなのでそう難しいことではありません。
【Search pattern】 |<h3 class=”news_headline1″>(.*?)</h3>|
【Replace pattern】 <h2>$1</h2>
やっと出来ました。最後に「Replace&Save」ボタンを押せば、一気に置換できます。普通の人はこんな苦労しないと思います。(.*)でうまくいくはずですから。
私のように癖のあるテーマを使ってる人がいたら参考にしてみてください。
まとめ
見出しタグなどのhtmlタグをセットで変換するときは正規表現を使いましょう。
通常は(.*)です。もしだめだったら(.*?) ハテナを追加してください。