WordPressの記事投稿時に正規表現でダブルクォートを含む本文を置換する

目次
WordPressで月10万円稼ぐなら海外FXアフィリエイト

Search Regexでよく使う正規表現をまとめたはいいのですが、Spreadsheetからコピペする度に実行するのに疲れました。

記事投稿時のfilterに関数をhookして処理をするようにします。

wp_insert_post_dataが受け取るpost_contentはダブルクォートがエスケープされている

wp_insert_post_data バックスラッシュ削除

かなりハマったのですが、フィルターwp_insert_post_dataが受け取る配列引数の中のpost_contentはなぜかダブルクォートの前にバックスラッシュを付けてきます。

var_dumpするとこんな感じ→『"』

なのでまずはバックスラッシュを消して普通のダブルクォートに置換しないとダブルクォートを含む正規表現が通りません。

functions.php

add_filter('wp_insert_post_data', 'modifyPostData');

function modifyPostData($data)
{
    $data['post_content'] = preg_replace('/"/', '"', $data['post_content']);
    $data['post_content'] = preg_replace('/<td data-[^>]+?>/', '<td>', $data['post_content']);
    $data['post_content'] = preg_replace('#<a class="in-cell-link"[^>]+?href="([^>]+?)"[^>]+?">#', '<a href="$1">', $data['post_content']);
    $data['post_content'] = preg_replace('#<span style="[^"]+?">([sS]+?)</span>#', '$1', $data['post_content']);
    $data['post_content'] = preg_replace('#<strong style="[^"]+?">([sS]+?)</strong>#', '<strong>$1</strong>', $data['post_content']);
    $data['post_content'] = preg_replace('/<a style="[^"]+?" /', '<a ', $data['post_content']);

    return $data;
}
$data['post_content'] = preg_replace('/"/', '"', $data['post_content']);

でエスケープされたダブルクォートを普通のダブルクォートに置換しているので、後は通常通りpreg_replaceなりなんなりしておけば大丈夫です。
投稿データを書き換えるので、最初に試す時は記事のバックアップを忘れないようにしてください。

WordPress関連記事

サイトについて

スマートフォンで海外FX&ビットコイン取引をする方法の解説。TariTali推し。

検索