レンタルサーバー比較メモ

レンタルサーバーメモブログ

 

Search Regexでタイトルなどを一括変更!

   

「WordPressのタイトルとかを変更したいんだけど・・・」と知り合いに相談されたのですが、記事数が多く、変更する部分が正規表現を使わないと変更できない文字列だったのでメモっておきたいと思います。

Search Regexでタイトルなどを一括変更する方法

最初はMySQLに直接アクセスしてゴニョゴニョしようと考えていたのですが、Search Regexというプラグインで簡単にタイトルを一括で変更できるみたいだったのでSearch Regexプラグインをインストールてみました。

インストール後に管理画面のツールからSearch Regexを選択してSearch Regexプラグインでいろいろ変更できる画面へ移動しました。

英語でいろいろ記述されていますが、見た目で何となく理解できたっぽかったので「Source」の「Post title」を選択後に変更したい文字列と変更後の文字列を記入して「Replace & Save」のポタンを押して終了のはずでした。

しかし、タイトルが検索されないので、文字列が変更されません!(ToT)

ググってみるとSearch Regexの不具合らしくSearch RegexのPHPファイルの一部を書き換えると変更することができるみたいだったので下記のように変更してみました。

Search Regexでタイトルを検索できるようにする方法

「search-regex/searches/post_title.php」から下記の部分を探します。

function find ($pattern, $limit, $offset, $orderby)
{
    global $wpdb;
    $results = array ();
    $posts   = $wpdb->get_results ($wpdb->prepare( "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 );
    if (count ($posts) > 0)
    {
        foreach ($posts AS $post)
        {
            if (($matches = $this->matches ($pattern, $post->post_title, $post->ID)))
            {
                foreach ($matches AS $match)
                    $match->title = $post->post_title;
                $results = array_merge ($results, $matches);
            }
        }
    }
    return $results;
}

その後、「search-regex/searches/post_title.php」を下記の様に書き換えます。

function find ($pattern, $limit, $offset, $orderby)
{
    global $wpdb;
    $results = array ();
    $posts   = $wpdb->get_results ($wpdb->prepare( "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 );
    if (count ($posts) > 0)
    {
        foreach ($posts AS $post)
        {
            if (($matches = $this->matches ($pattern, $post->post_title, $post->ID)))
            {
                foreach ($matches AS $match)
                    $match->title = $post->post_title;
                $results = array_merge ($results, $matches);
            }
        }
    }
    return $results;
}

上記の様に書き換えた後はタイトルが検索される様になりました。

Search Regexでタイトルなどを正規表現で変更する方法

Search Regexでタイトルを変更するには、

  1. Search patternに変更したい現在存在する文字列を入力する
  2. Replace patternに変更したい新しい文字列を入力する
  3. Replace & Saveボタンを押す

という手順でタイトルを変更する必要があります。

今回はSearch Regexでタイトルを正規表現で変更したいので

Search patternには下記の様に入力。

|<div>(.*)</div>|

Replace patternには下記の様に入力します。

<h1>$1</h1>

あとは「Regex:」にチェックを入れて「Replace & Saveボタンを押す」だけで、複数の文字列やhtmlタグなどを一括で変更することができます。

WordPressのプラグインにはphpmyadminなどでMySQLにアクセスしなくてもよいものがあるのでとても助かりますよね。(^o^)

 - WordPress

Message

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

  関連記事

no image
WordPressのSimplePieで取得できるタイトルを変更。

WordPressに同梱されているSimplePieで取得できるタイトルの部分を …

no image
カスタム投稿でカテゴリーを取得する!

WordPressのカスタム投稿タイプでカテゴリを取得しようとしたところ「the …

no image
Stinger7の記事一覧でページ送りが表示されない!

Stinger5で表示されていたページ送り(ページネーション)の部分がSting …

no image
パーマリンクが編集できない!

新しいブログを作る為にWordPressをインストールしたのですが、パーマリンク …

no image
RSSから特定のカテゴリーを削除する

WordPressのRSSから特定のカテゴリーを削除したかったのでメモっておきた …

no image
子テーマのCSSが反映されない!

オリジナルのテーマを編集しないでデザインやレイアウトを変更できるWordPres …

no image
wordpressで記事編集リンクを付ける方法

wordpressで利用するテーマによっては、記事を編集するためのリンクが記述さ …

no image
W3 Total CacheとDB Cache Reloaded Fixでエラー

W3 Total CacheとDB Cache Reloaded Fixの両方を …

no image
特定のカテゴリーの時にだけ表示させる!

WordPressの特定のカテゴリーの記事一覧で表示させたい文字列があったので「 …

no image
「SyntaxHighlighter Evolved」でコードソースを表示させる。

WordPressでPHPスクリプトなどのコードソースを表示されるプラグインを探 …