PostSnippetsのエラー(警告)への対処【WordPress】


Warning: Undefined array key "snippetVars" in /home/pxa/wnkhs.net/public_html/wp-content/plugins/post-snippets/src/PostSnippets/PSallSnippets.php on line 721

Warning: Undefined array key "snippetVars" in /home/pxa/wnkhs.net/public_html/wp-content/plugins/post-snippets/src/PostSnippets/PSallSnippets.php on line 721
Blog Admin
Blog Admin

投稿ページに謎のメッセージが表示されていることに気付きました。
プラグイン「PostSnippets」で何かが発生していたようです。
問題は解決できましたので、記録を残しておきます。

警告

WordPress
プラグインのエラー
(PostSnippets)

ブログのCMSはWordPressです。
いくつかのプラグインを使っており、そのうちのひとつ「PostSnippets」で何かが起こったようです。

プログラムの中身が分かるわけではないので、状況から判断できた対処の記録です。
解決済みです。

WordPressも、PHPも、プラグインも、最新版ということを確認できていました。
プラグインの無効化と有効化を何度か試しましたが、状況変わらずでした。(無効化すればメッセージは表示されませんでした。)

「Warning」とのこと

投稿を表示すると、冒頭に「Warning」メッセージが表示される問題が発生しておりました。

エラーですよね。
警告ですが。
ユーザーに無関係なメッセージが表示されているということで、大問題です。

警告
Warning

メッセージの中身を解釈すると、PostSnippetsの構成ファイルのうちの何かで、配列か何かのキーが見つからないとか定義されていないとか、そういったことだと思いました。

Warning: Undefined array key "snippetVars" in /home/pxa/wnkhs.net/public_html/wp-content/plugins/post-snippets/src/PostSnippets/PSallSnippets.php on line 721

PHPファイルの中身は見たところで分かりませんし、自分で手を入れるとプラグインの意味がないので。
状況に対処する方針になりました。

警告を表示するようなかたちにはしてほしくないですね。

変数不足?

メッセージが表示されるページと表示されないページがありました。
表示されるページは問題あり表示されないページは問題なしということで、コードを確認してみたところ、法則を見出すことができました。

表示されているメッセージからも、なんとなく分かることがあります。
手元での表示内容も見つつ、解釈できました。
配列のキーになっている「snippetVars」がないということですよね。
プラグインの詳細仕様を理解できていませんが、必須項目とかいったことなのでしょう。

最近になってメッセージが表示されるようになりましたので、仕様変更があったのでしょうか。。

ブロックエディターで再選択や、ブロックを削除 → 新規でも解決できたのですが。
複数ページで発生している問題には対応できません。。

コードを見て分かったこと: たしかに値がない

問題なしのコード問題ありのコードを見比べて、たしかに「snippetVars」の指定がないということが分かりました。
それでも一筋縄ではいかなかったわけです。
2パターンあったのです!

ブロックエディターの右上メニューから、コードエディターを選択することで、コードを確認できます。
キーボードショートカットは、Ctrl + Shift + Alt + M です。

パターン1: ID指定だけ

IDだけが指定されているようなものがありました。

1行
1行だけ?
<!-- wp:greentreelabs/post-snippets-block {"snippetID":"1"} /-->

ビジュアルエディターの見た目では、IDさえ指定されていればよいのかもしれないですね。
ページ表示の際の処理においては、警告メッセージに表示されているようなファイルの中で引数が渡されなくて困ってしまうのでしょう。

パターン2: 引数が指定されていない

引数がいろいろと指定されているのですが、当該名称のもの(snippetVars)が含まれていないものがありました。

<!-- wp:greentreelabs/post-snippets-block {"snippetID":"1","snippet":"PS-Ad-inline","shortcode":true,"text_fields":[]} -->
<div class="wp-block-greentreelabs-post-snippets-block">[PS-Ad-inline ]</div>
<!-- /wp:greentreelabs/post-snippets-block -->

たしかにありません。

ビジュアルエディターの見た目では、こういった指定でもよいのでしょう。
ページ表示の際の処理においては、警告メッセージに表示されているようなファイルの中で引数が渡されなくて困ってしまうということですね。

対処: 正しいコードに置き換える

原因が分かりましたので、問題のコードを置き換えていきます。
問題なしのコードを確認すると、空の配列を渡すことになっているようです。
意味がないなら指定なしでもよいようにしていただきたいものです。。

コードの確認と実験

問題なしのコードは以下です。

<!-- wp:greentreelabs/post-snippets-block {"snippetID":"1","snippetVars":{},"snippet":"PS-Ad-inline","shortcode":true,"text_fields":[]} -->
<div class="wp-block-greentreelabs-post-snippets-block">[PS-Ad-inline ]</div>
<!-- /wp:greentreelabs/post-snippets-block -->

"snippetVars":{} の部分で指定しているのですね。
これを見る限り、空の配列を書いているだけです。
使わないならデフォルト値をnullとかで決めていただいてもよかったのではないかと思ってしまいます。

Search Regex で一括置換

コードの置き換えですので、置換できるプラグインを使います。
手元環境では「Search Regex」を使っています。

Search Regex
Search Regex

コードであっても置き換えできます。

正規表現などの設定は確認しておきましょう。
(今回は大丈夫でしたが、文字の種類によっては問題になりかねません。)

複数パターンでしたので、パターンごとに置き換えました。

解決できたと信じています

警告文は表示されなくなっているはずです。
そう信じています。

手動ではすべての投稿をチェックできませんので、AIエージェントの力を使いました。
さすがですね。
依頼をかけて、しばらく放置してから確認で、結果が分かります。
これで複数パターンあったことが分かりました。

コードパターンで解釈してくれたようで、アクセス数の統計には影響なさそうです。

パターンを見つけ出す

細かいことが分からなくても、パターンが見つかればなんとかなるものです。
見た目だけで問題を見出せました。

コード
これもエラーになっていました。

さすがにブロックエディターでは分からなかったのですが。

コードエディターで見て分かるレベルでよかったです。
プログラムに手を入れる必要もなく、表面的に対応できたことも助かりました。

ところで、どうして複数パターンの問題が発生していたのでしょう。
そもそも問題が発生していることに謎が残ります。。
原因不明という点には不安を覚えます。

この投稿を書いたのは・・・
Blog Admin

ガジェットが大好きで、ほぼ毎月何かしら調達しております。
無駄遣い扱いされたくないのと、何かの役に立つかと思い、記録を書くことにしたのでした。

お出かけのときには、スマホを複数台とタブレットとパソコンを持ち歩きます。
両手首にはスマートウォッチです。
こんなスタイルで生活している中での備忘録を書いています。

「Blog Admin」をフォローしてみる
ブログ関連
「Blog Admin」をフォローしてみる

ご意見やご感想などお聞かせください! コメント機能です。

タイトルとURLをコピーしました