1. TOPTOP
  2. Webサービス

Amazon JS(WordPressのプラグイン)のショートコードを削除する方法〜WP-CLI(wp search)と正規表現による置換

amazonjs_product_advertising_api_error_0

先日、Amazon JS(WordPressのプラグイン)で”Product Advertising APIのエラー”が表示される件について(新しいタブで開く)という記事を書きました。

amazonjs_product_advertising_api_error_4

Product Advertising APIのエラーが表示されるため、Amazon JSを停止・削除した方も多いのではないでしょうか。ただAmazon JSを停止・削除すると、”[amazonjs asin=…]”で始まるAmazon JS特有のショートコードが残ってしまいます。

WP-CLIで文字列を削除する方法

そのショートコードが1つか2つぐらいならば手動で削除してもそれほど手間はかからないでしょう。問題は手動で削除しきれないほどAmazon JSのショートコードが存在する場合です。

その場合は「何らかの手段」でまとめてショートコードを削除するhouga良いでしょう。以下の文章では、ショートコードをまとめて削除する方法をご紹介します。

WP-CLIの活用

WordPress専用のコマンドツールであるWP-CLIには“wp serach-replace”(新しいタブで開く)というコマンドがあります。WordPressのデータベース内にある任意の文字列を一括で置換できるコマンドですが、オプションをつけると置換する文字列に正規表現を用いることができます。

# wp search-replace '(置換前の文字列)' '(置換後の文字列)' --regex --regex-flags='i'

ショートコードをまとめて削除するwpコマンドの構文は上記のとおりとなります。ドキュメントルートを指し示す”path”オプションはなくても差し支えはありません。

置換する文字列の正規表現

次に構文の中で使用する、’(置換前の文字列)’と’(置換後の文字列)’を考えます。上記の構文のうち’(置換後の文字列)’は、’(なし)’となります(Amazon JSのショートコードがなくなれば良いので)。

一方、(置換する文字列)には正規表現を用います。正規表現とは文字列の検索パターンを表現するための記法のことを言います。したがって(置換する文字列)にはAmazon JSに関するあらゆる文字列の検索パターンを網羅する表現が必要となります。

'\[amazonjs asin="(.+)" locale="(.+)" title="(.+)"\]'

結論から言うと、(置換する文字列)は上記の検索パターンとして表現されます。

“\[“と”\]”

Amazon JSのショートコードの中で最初と最後に使われている、”[“と”]”は基本的にはメタ文字です。メタ文字は、その文字自体を表わさず、代わって特別な解釈が行われるため、メタ文字を打ち消すメタ文字の”\(バックスラッシュ)”を使います。

(.+)

“.”は改行を除く任意の一文字を表します。”+”は1回以上の繰り返しを表します。”(.+)”とすることで商品の名前として使われているどんな文字列もカバーすることができます。

wp search-replaceの実行内容

# wp search-replace '\[amazonjs asin="(.+)" locale="(.+)" title="(.+)"\]' '' --regex --regex-flags='i'

以上、wp search-replaceの構文と正規表現を合わせると、Amazon JSのショートコードを削除するための、コマンドは上記の通りとなります。プラグインを停止・削除したものの、ショートコードの残骸が残ってしまって困っている方という方はぜひ参考にしてください。