-
投稿者投稿
-
2025年6月24日 6:51 PM #145513
【お使いの Snow Monkey のバージョン】25.4.7
【お使いの Snow Monkey Blocks のバージョン】24.0.4
【お使いの Snow Monkey Editor のバージョン】11.0.2
【お使いのブラウザ】Google Chrome### 実現したいこと
WooCommerceのアカウントログイン画面に、プラグイン「SiteGuardWP」から生成される画像認証を表示させるために、以下のコードを機能させたい。
if ( isset( $siteguard_captcha ) ) {
add_filter( ‘woocommerce_login_form_start’, [ $siteguard_captcha, ‘handler_login_form’ ] );
add_filter( ‘woocommerce_register_form_start’, [ $siteguard_captcha, ‘handler_register_form’ ] );
add_filter( ‘woocommerce_lostpassword_form’, [ $siteguard_captcha, ‘handler_lostpassword_form’ ] );
}### 発生している問題
上記コードをmy snow monkeyに記述しても効かない。
(他に記述しているコードも幾つかありますが、それらは効いています)### 試したこと
試しにテーマのfunction.phpに記述してみたら効きました。
何か初歩的なミスなのではと思うのですが…何かヒントをいただければ幸いです。
♥ 0Who liked: No user2025年6月24日 8:43 PM #145515テーマの
functions.php
よりプラグインのほうが早いタイミングで読み込まれるので、My Snow Monkey が読み込まれたタイミングでは$siteguard_captcha
が未定義だけど、テーマが読み込まれたタイミングでは$siteguard_captcha
が定義済みである、ということではないでしょうか。という想定でいくと、テーマが読み込まれたあとに発火するアクションフック
after_setup_theme
か、全プラグインが読み込まれたあとに発火するアクションフックplugins_loaded
あたりでコードを実行するとよいのではないでしょうか?(SiteGuard WP には詳しくないので動くかはわかりませんが、このあたりをヒントに試してみてください)add_action( 'after_setup_theme', function () { if ( isset( $siteguard_captcha ) ) { add_filter( 'woocommerce_login_form_start', [ $siteguard_captcha, 'handler_login_form' ] ); add_filter( 'woocommerce_register_form_start', [ $siteguard_captcha, 'handler_register_form' ] ); add_filter( 'woocommerce_lostpassword_form', [ $siteguard_captcha, 'handler_lostpassword_form' ] ); } } );
♥ 0Who liked: No user2025年6月25日 6:17 PM #145529キタジマさんいつもありがとうございます!
発火するタイミングという視点は思いもよりませんでした。しかしならがご教示いただきましたコード、
after_setup_theme
とplugins_loaded
の
2パターン試してみましたが、残念ながら機能しませんでした。。こちら、解明するのに必要な情報は他にありますでしょうか?
なかなか難しそうなら、今回は諦めて他の方法でセキュリティを担保したいと思います。♥ 0Who liked: No user2025年6月25日 10:43 PM #145533あ、
global
を宣言しないとダメかもです。add_action( 'after_setup_theme', // あるいは plugins_loaded function () { global $siteguard_captcha; if ( isset( $siteguard_captcha ) ) { add_filter( 'woocommerce_login_form_start', [ $siteguard_captcha, 'handler_login_form' ] ); add_filter( 'woocommerce_register_form_start', [ $siteguard_captcha, 'handler_register_form' ] ); add_filter( 'woocommerce_lostpassword_form', [ $siteguard_captcha, 'handler_lostpassword_form' ] ); } } );
♥ 0Who liked: No user2025年6月27日 2:13 PM #145545 -
投稿者投稿
- トピック「function.phpに記述すると機能するコードが、my snow monkeyに記述しても効かない」には新しい返信をつけることはできません。