色々やっていたらおかしな状態になってしまった問題('A`)
まず落ち着こう。深呼吸。
Post Snippets から Shortcoder に変えた。
変えた後のショートコード挿入は問題なく行えている。OKここに問題はない。
過去分のショートコードを Shortcoder の形式に置換しようと
Search Regexを使ったらエラーが出た と。
正確には画面上は正常終了しているように見えていて、
致命的なエラーが出たときにメール通知してくれるというWordPress 5.2~の機能で
メールが飛んできてエラーであることを知った。
解析
「WordPress 置換 プラグイン」で検索すると感覚的には8割ぐらいの割合で
Search Regex の記事が見つかる。
そんな Search Regex だけど、最終更新は4年前。
今のWordPress(やPHP)のバージョンで正常に動く保証はどこにもない。
面倒だが詳細を追ってみるか。
メールで送られてきたスタックトレースはコレ。
※サーバ内のパスが出ているので**********で伏せてある。
エラータイプ E_ERROR が **********/wp-content/plugins/search-regex/view/results.php ファイルの 26 行目で発生しました。 エラーメッセージ: Uncaught Error: Call to undefined method SearchRegex::base_url() in **********/wp-content/plugins/search-regex/view/results.php:26
Stack trace:
#0 **********/wp-content/plugins/search-regex/search-regex.php(130): include()
#1 **********/wp-content/plugins/search-regex/search-regex.php(116): SearchRegex->render('results', Array)
#2 **********/wp-includes/class-wp-hook.php(286): SearchRegex->admin_screen('')
#3 **********/wp-includes/class-wp-hook.php(310): WP_Hook->apply_filters('', Array)
#4 **********/wp-includes/plugin.php(465): WP_Hook->do_action(Array)
#5 **********/wp-admin/admin.php(253): do_action('tools_page_sear...')
#6 **********/wp-admin/tools.php(10): require_once('/**********...')
#7 {main}
thrown
search-regex/view/results.php の26行目がエラーを出してますな。
というわけで、ソースのその箇所を見る。
<img src="<?php echo plugins_url( '/images/small.gif', $this->base_url() ); ?>" style="display: none" alt="pre"/>
・・・・・。
画像のパスを取ろうとして失敗してる。
無視して良いエラーだな。
処理はちゃんと終わっていると思って良いんだろう・・・・・・か?
確かにもう一度同じ条件で検索すると結果は0件になるんだけど
記事のページ開くと古いショートコード名のままだからなぁ・・・。
気持ちが悪いので別の置換プラグインを入れて試してみよう。
試したのはBetter Search Replace。
このプラグインはテーブル指定をした上で置換を行う。
不慣れな人はこのあたりからワケがわからなくなるかもしれないw
記事本体は「※接頭語※_posts」になる。
データ量が多すぎるテーブルはリミットを上げられるけど50,000までなので
場合によっては溢れる可能性がある。
ちなみに俺の記事数は4,500程度。約8年2ヶ月 毎日書いてこの量。
ここでも検索には数件しか引っかからず。
Search Regex で置換した後に投稿した記事を直し忘れていたので、多分それ。
DB直
しかし・・・なんで検索に引っかからないのに、WordPressのエディタで見ると
古い情報のままなんだろうか。
そもそも本当に置換できてる?
というのが気になったのでDBを直接見ることに。
DBに接続して件数取得。
select count(*) from ※接頭語※_posts where post_content like '%※ショートコード名※%';
・・・む。0件だ。
念のためレコードの中も見ておこう。
エディタで古いショートコードが表示される記事を選ぶ。
俺の場合、パーマリンクを"基本"にしているのでURLのp=9999
の数字部分がキーになる。
select post_content from ※接頭語※_posts where ID='9999';
・・・あれ。
DBのデータはちゃんと置換されてるぞ?
どっから出てきたんだ置換前の文字列!?((((;゜Д゜))))