-
投稿者投稿
-
2024年8月28日 4:16 PM #141315
【お使いの Snow Monkey のバージョン】 27.0.1
【お使いの Snow Monkey Blocks のバージョン】21.0.7
【お使いの Snow Monkey Editor のバージョン】10.0.4
【お使いの PHP のバージョン】PHP8.2.9
【お使いのブラウザ】Google Chrome
【当該サイトのURL】非公開### 発生している問題
Snow Monkey Formsのsnow_monkey_forms/administrator_mailer/argsフィルターを利用して送信先のカスタマイズをしています。WP_DEBUGとWP_DEBUG_LOGをtureとした状態で、error_log()関数を記述してメール送信テストを行いました。
以下のエラーが出力されました。
PHP Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /ホスト/ドメイン/public_html/フォルダ/wp-content/themes/snow-monkey/vendor/inc2734/wp-view-controller/src/App/Contract/Template_Tag.php on line 194### 試したこと
メールの送信など、動作は正常に見受けられますが、エラーで示された箇所の修正が必要なのかもしれないと思い、ご報告いたしました。以上、ご確認よろしくお願いいたします。
♥ 0いいねをした人: 居ません2024年8月29日 1:11 AM #141328snow_monkey_forms/administrator_mailer/args
フィルターフックを使ったカスタマイズを行わない場合はPHP Deprecated〜
のエラーは表示されないのですかね?♥ 0いいねをした人: 居ません2024年8月29日 9:55 AM #141330snow_monkey_forms/administrator_mailer/args
フィルターフック内のエラー出力処理をコメントアウトし、my-snow-monkey.php
に以下の記述を追加してみたところ、ログは出力されましたが、PHP Deprecated〜
のエラーは表示されませんでした。// フィルターフックの外でエラーログを出力 if (defined('WP_DEBUG') && WP_DEBUG && defined('WP_DEBUG_LOG') && WP_DEBUG_LOG) { error_log("test"); }
Snow Monkey Formsの「別のフィルターフックを試した方が良いか」とも考えましたが、適当なフィルターフックがわからず……(汗)
上記の対応でよろしかったでしょうか。
ご確認お願いいたします。♥ 0いいねをした人: 居ません2024年8月29日 2:33 PM #141338ありがとうございます。となると
snow_monkey_forms/administrator_mailer/args
にフックさせた処理に何かある可能性もあるのかなと思いました。こちらでも試してみたいので、
snow_monkey_forms/administrator_mailer/args
にフックさせた処理をここに貼り付けてもらうことはできますか?♥ 0いいねをした人: 居ません2024年8月29日 3:15 PM #141343お問い合わせフォームにラジオボタンを設置し、ラジオボタンの選択に応じて送信先を変更する意図で処理を実装しております。NAME属性の値は
inquiry
としています。
ラジオボタンのOPTIONS
はlabel
は記入せず、value
のみを改行で入力しております。add_filter( 'snow_monkey_forms/administrator_mailer/args', function ($headers, $responser, $setting) { //お問い合わせフォームページのみで以下の処理を行う if (is_page('contact')) { $inquiry = $responser->get('inquiry'); $recipient = ""; switch ($inquiry) { case "ボタン1": $recipient = "メールアドレス1"; break; case "ボタン2": $recipient = "メールアドレス2"; break; case "ボタン3": $recipient = "メールアドレス3"; break; case "ボタン4": $recipient = "メールアドレス4"; break; } // // 【開発用】$inquiry の値をデバッグログに出力 // if (defined('WP_DEBUG') && WP_DEBUG && defined('WP_DEBUG_LOG') && WP_DEBUG_LOG) { // error_log('$inquiry: ' . print_r($inquiry, true)); // } $headers['to'] = $recipient; } return $headers; }, 10, 3 );
ご確認よろしくお願いいたします。
♥ 0いいねをした人: 居ません2024年9月1日 11:28 PM #141377お返事遅くなりすみません! いただいたコードをテスト環境にはりつけて試してみました。
PHP 8.1、8.2、8.3 で試してみたのですが、いずれの環境でもエラーは確認できませんでした。
別の要因がエラーの原因である可能性もあるのかな?と思いましたので、以下について教えてください。
以下のエラーが出力されました。
PHP Deprecated: trim(): Passing null to parameter #1 ($string) of type string is deprecated in /ホスト/ドメイン/public_html/フォルダ/wp-content/themes/snow-monkey/vendor/inc2734/wp-view-controller/src/App/Contract/Template_Tag.php on line 194上記について、エラーはどこに出力されたのでしょうか? 画面上、エラーログ等…。
エラーログだった場合、
error_log('$inquiry: ' . print_r($inquiry, true));
の部分をerror_log('$inquiry: ' . print_r($inquiry, true), 3, get_template_directory() . '/error_log');
のようにすると、そのエラーはsnow-monkey/error_log
に出力されるのか、それともサーバーのエラーログに出力されるのかどちらでしょうか?もう一点、子テーマや My Snow Monkey によるテンプレートの上書き、あるいは
snow_monkey_get_template_part_render
フィルターフックを使ったカスタマイズはされていますでしょうか?
している場合、それをやめるとエラーは発生しなくなりますか?♥ 0いいねをした人: 居ません2024年9月2日 10:34 AM #141386お返事いただきありがとうございます!
まず結果をお伝えしますと、
PHP Deprecated〜
のエラーは出力されなくなりました。【ソースコードの誤りについて】
先に提示したコードに誤りがあったことをお詫びします。
is_page()
による条件分岐内でエラーログ出力の処理が機能していないようでした。
このため、条件分岐の外に$reponser->get()
を記述し、この値に応じて処理を追加するように修正いたしました。add_filter( 'snow_monkey_forms/administrator_mailer/args', function ($headers, $responser, $setting) { $inquiry = $responser->get('inquiry'); $recipient = ""; //inquiryがnullでない場合のみで以下の処理を行う if (!is_null($inquiry)) { // switch文(inquiryの値に応じた送信先の設定 $headers['to'] = $recipient; // if文の中でログ出力A } // if文の中でログ出力B return $headers; }, 10, 3 );
【エラーログの出力箇所について】
エラーログはwp-content/debug.log
に出力されておりました。
ご提示いただいた以下のコードに書き換えたところ、wp-content/themes/snow-monkey/error_log
に出力されました。error_log('$inquiry: ' . print_r($inquiry, true), 3, get_template_directory() . '/error_log');
【カスタマイズについて】
・子テーマ=利用無し
・ My Snow Monkey によるテンプレートの上書き=snow_monkey_template_part_root_hierarchy_template-parts/
を利用しています。
・snow_monkey_get_template_part_render
=利用しています。エラーの再現がなくなったため、これらのカスタマイズとの関係はわかりませんでした。
以上です。
最初に出力されたエラーが再現しなくなった理由がハッキリとわかりませんが、ひとまず正常に動作しているという認識です。お手数おかけして、申し訳ありませんでした。
♥ 0いいねをした人: 居ません2024年9月3日 9:37 AM #141415んーとなると
is_page()
に何かあるんですかね〜。でもこちらの環境ではis_page()
を使ってもPHP Deprecated:
は出力されなかったので、is_page()
+ 何か、あるいはis_page()
のときに発火する何か、みたいな可能性もあるのかなと思いました。トピックのクローズをお願いします!
♥ 0いいねをした人: 居ません -
投稿者投稿
- トピック「wp-view-controllerに関するエラーログが出力される」には新しい返信をつけることはできません。