-
投稿者投稿
-
2020年6月15日 1:56 AM #52696
トピックを新しく立てる方は次の項目も記述してください(要望トピックの場合は不要です)。
【お使いの Snow Monkey のバージョン】
【お使いのブラウザ】Catalina GoogleChrome
【当該サイトのURL】https://sora-clip.com/contact/===
いつもお世話になっております。
こちらでおうかがいしてよいのかわからないのですが、SWELL に Snow Monkey Forms を設置した際、送信完了のメッセージが表示されません(プログレスアイコンは完了になり、メールは送信されます)。
同じサイト内に複数の Snow Monkey Forms を設置していますが、全て同じ状況です。
何か考えられる原因はございますでしょうか…?
♥ 0いいねをした人: 居ません2020年6月15日 10:41 AM #52705念の為確認ですが、フォームの編集画面で完了画面の内容が空になっているということはないでしょうか?
♥ 0いいねをした人: 居ません2020年6月15日 11:26 AM #52708テストメール、届きました。
ありがとうございます。完了メッセージは入っております。
他に何か見るところはございますでしょうか…
♥ 0いいねをした人: 居ません2020年6月15日 12:56 PM #52712こちらでも SWELL の環境を用意してみました。確かに完了メッセージが表示されないです…。調査してみます!
♥ 0いいねをした人: 居ません2020年6月15日 1:11 PM #52713すみません、ありがとうございます…!
♥ 0いいねをした人: 居ません2020年6月15日 1:15 PM #52714修正方法はわかりませんが原因はわかりました!
snow-monkey-forms/App/Model/Responser.php の中に
send
というメソッドがあり、そこで送信時のレスポンスを定義しています。で、編集画面で入力したメッセージはブロックでつくられているので、正しく表示されるようにthe_content
フィルターを通してレスポンスを返すようにしています。return json_encode( [ 'method' => $method, 'data' => $this->data, 'controls' => $controls, 'action' => $action, 'message' => apply_filters( 'the_content', $message ), // ← ココ ], JSON_UNESCAPED_UNICODE );
この
the_content
フックを通らないようにすると表示されるようになりました。ということで、その先は調べていませんが、SWELL がthe_content
に何らかの独自コールバック関数を追加していて、それが影響しているという可能性があるかなぁと思いました。SWELL の中でadd_filter('the_content',...
している部分を1つずつ消していけば何かわかるかもしれません…。♥ 0いいねをした人: 居ません2020年6月15日 1:33 PM #52715ありがとうございます…!
swell>classes>SELL_THEME>Hooks>The_Content.php
// フロントでのみ the_content へのフックを登録。 if ( ! IS_ADMIN ) { // ショートコード展開(優先度:11)より前に実行する処理 // add_filter( 'the_content', 'remove_p_by_shortcode', 10 ); // add_filter( 'widget_text_content', 'remove_p_by_shortcode', 10 ); //ショートコード展開より後に実行する処理 // add_filter('the_content', [self::$instance, 'add_toc'], 12); add_filter('the_content', [self::$instance, 'remove_empty_p'], 12); // add_filter('the_content', [self::$instance, 'add_lazyload'], 12); // add_filter('the_content', [self::$instance, 'url_to_blog_card'], 12); // 過去ブロックとの後方互換性を保つための処理 // require_once( T_DIRE.'/lib/block/replace_old_blocks.php' ); } }
ショートコード展開より後に実行する処理の add_toc、add_lazyload、url_to_blog_card を止めると表示されました!
♥ 0いいねをした人: 居ません2020年6月15日 2:23 PM #52720情報ありがとうございます!
止めたコールバック関数にある
if ( ! defined( 'IS_TOP' ) ) return;
がアヤシいと思います! 何も返してないので、return $content;
にすると良いかもです。♥ 0いいねをした人: 居ません2020年6月15日 2:30 PM #52721止めたコールバック関数にある if ( ! defined( ‘IS_TOP’ ) ) return; がアヤシいと思います! 何も返してないので、 return $content; にすると良いかもです。
こちらでいけました!
ありがとうございます!ちょっと了さんに相談してみます…フォームのあるページだけ remove_filter すればいいのかなと思ったのですが、こちらの処理は何をしているんだろう…
♥ 1いいねをした人: 居ません2020年6月16日 9:18 AM #52753ビンゴ!
ちょっと了さんに相談してみます…フォームのあるページだけ remove_filter すればいいのかなと思ったのですが、こちらの処理は何をしているんだろう…
そうですね、それが良いと思います。Snow Monkey Forms 以外にもこういう処理をしているプラグインは多いと思うので…。
♥ 0いいねをした人: 居ません2020年6月16日 6:40 PM #52857ありがとうございました!
…しかし、フォームのページだけ remove_filter ってどうやるんですか…
after_setup_theme で投稿状態の取得ってできるんでしょうか…♥ 0いいねをした人: 居ません2020年6月17日 11:23 AM #52887コレ多分 REST の中の話なので、「フォームのページのとき」というよりは「REST のとき」になるのかなという気がします。でもそれよりも、
if ( ! defined( 'IS_TOP' ) ) return;
が問題なので、同じように「! defined( 'IS_TOP' )
のとき」にremove_filter
すると良いかもしれません。でもそもそもこれは挙動が SWELL のバグっぽいので、
return $content;
するように直してもらうのがベストだと思います(もしそうすると SWELL の他の部分に問題がでるようだとそれも難しいかもしれませんが…)。♥ 0いいねをした人: 居ません2020年6月17日 12:00 PM #52889なるほど・・・!
ありがとうございます。
お手数をおかけしました。クローズします!
♥ 1いいねをした人: 居ません -
投稿者投稿
- トピック「Snow Monkey Forms の送信完了メッセージが表示されない」には新しい返信をつけることはできません。