-
投稿者投稿
-
2019年2月19日 10:28 PM #10662
<h2>【お使いの Snow Monkey のバージョン】v5.1.1</h2>
度々の質問で恐縮です。
function.phpから、プラグインmy-snow-monkeyに移行の際のことです。
function.phpに多数あったコードをコピーしましたが、1つだけエラーを起こし、画面が真っ白になってしまいます。 function.phpでは正常に稼働していますが、どこが問題か、分かりましたら教えていただけますでしょうか。
問題のコードはちょっと長いのですが以下です。
MWフォームで、チェックボックスにチェックを入れると、必須を解除させるという内容です。/* MWフォーム バリデーション追加 */ if ( ! class_exists( "MW_WP_Form_Validation_Rule_RequiredCheckbox" ) ) { class MW_WP_Form_Validation_Rule_RequiredCheckbox extends MW_WP_Form_Abstract_Validation_Rule { protected $name = 'requiredcheckbox'; public function rule( $key, array $options = array() ) { $value = $this->Data->get( $key ); if ( !is_null( $value ) ) { $target = $this->Data->get( $options['target'] ); if ( empty( $value ) && MWF_Functions::is_empty( $target ) ) { $defaults = array( 'target' => null, 'message' => sprintf( '未入力です。メールアドレスのない方は下欄のチェックを入れてください。', $options['target'] ) ); $options = array_merge( $defaults, $options ); return $options['message']; } } } public function admin( $key, $value ) { $target = ''; if ( is_array( $value[$this->getName()] ) && isset( $value[$this->getName()]['target'] ) ) { $target = $value[$this->getName()]['target']; } ?> <table> <tr> <td>必須または選択したチェックボックス項目</td> <td><input type="text" value="<?php echo esc_attr( $target ); ?>" name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>][target]" /></td> </tr> </table> <?php } } } function mwform_validation_rule_requiredcheckbox( $validation_rules ) { $instance = new MW_WP_Form_Validation_Rule_RequiredCheckbox(); $validation_rules[$instance->getName()] = $instance; return $validation_rules; } add_filter( 'mwform_validation_rules', 'mwform_validation_rule_requiredcheckbox' );
エラーは以下の内容です。
Fatal error: Class 'MW_WP_Form_Abstract_Validation_Rule' not found in /home/volunavi/stopkodokushi.info/public_html/test3/wp-content/plugins/my-snow-monkey/my-snow-monkey.php on line 494
♥ 0いいねをした人: 居ません2019年2月20日 9:52 AM #10669テーマ(functions.php)はプラグインは完全に読み込まれたあとに実行されますが、 My Snow Monkey はプラグインなので、 My Snow Monkey が読み込まれた段階では MW WP Form が読み込まれていない可能性があります。
全てのプラグインが読み込まれてから実行するには、
plugins_loaded
にフックして処理を実行すると良いです。mwform_validation_rules
にフックさせている部分を下記のようにするとどうでしょうか?add_action( 'plugins_loaded', function() { add_filter( 'mwform_validation_rules', 'mwform_validation_rule_requiredcheckbox' ); } );
♥ 0いいねをした人: 居ません2019年2月20日 1:59 PM #10706ありがとうございます。
以下の内容をご教示いただいた内容に変えてみたのですが、まだエラーが出ます。
add_filter( 'mwform_validation_rules', 'mwform_validation_rule_requiredcheckbox' );
▼エラー内容です。
Fatal error: Class 'MW_WP_Form_Abstract_Validation_Rule' not found in /home/volunavi/stopkodokushi.info/public_html/test3/wp-content/plugins/my-snow-monkey/my-snow-monkey.php on line 492
♥ 0いいねをした人: 居ません2019年2月20日 2:07 PM #10708plugins_loaded
ではなくafter_setup_theme
にするとどうですかね?♥ 0いいねをした人: 居ません2019年2月20日 2:35 PM #10711まだエラーが出ます。エラーの
snow-monkey/my-snow-monkey.php on line 492
の部分は、if ( ! class_exists( "MW_WP_Form_Validation_Rule_RequiredCheckbox" ) ) { class MW_WP_Form_Validation_Rule_RequiredCheckbox extends MW_WP_Form_Abstract_Validation_Rule { protected $name = 'requiredcheckbox';
のうち、この部分です。
class MW_WP_Form_Validation_Rule_RequiredCheckbox extends MW_WP_Form_Abstract_Validation_Rule {
♥ 0いいねをした人: 居ません2019年2月20日 2:54 PM #10713あ、もっと広く囲わないといけなかったみたいです、すみません。
add_action( 'plugins_loaded', function() { /* MWフォーム バリデーション追加 */ if ( ! class_exists( "MW_WP_Form_Validation_Rule_RequiredCheckbox" ) ) { class MW_WP_Form_Validation_Rule_RequiredCheckbox extends MW_WP_Form_Abstract_Validation_Rule { protected $name = 'requiredcheckbox'; public function rule( $key, array $options = array() ) { $value = $this->Data->get( $key ); if ( !is_null( $value ) ) { $target = $this->Data->get( $options['target'] ); if ( empty( $value ) && MWF_Functions::is_empty( $target ) ) { $defaults = array( 'target' => null, 'message' => sprintf( '未入力です。メールアドレスのない方は下欄のチェックを入れてください。', $options['target'] ) ); $options = array_merge( $defaults, $options ); return $options['message']; } } } public function admin( $key, $value ) { $target = ''; if ( is_array( $value[$this->getName()] ) && isset( $value[$this->getName()]['target'] ) ) { $target = $value[$this->getName()]['target']; } ?> <table> <tr> <td>必須または選択したチェックボックス項目</td> <td><input type="text" value="<?php echo esc_attr( $target ); ?>" name="<?php echo MWF_Config::NAME; ?>[validation][<?php echo $key; ?>][<?php echo esc_attr( $this->getName() ); ?>][target]" /></td> </tr> </table> <?php } } } function mwform_validation_rule_requiredcheckbox( $validation_rules ) { $instance = new MW_WP_Form_Validation_Rule_RequiredCheckbox(); $validation_rules[$instance->getName()] = $instance; return $validation_rules; } add_filter( 'mwform_validation_rules', 'mwform_validation_rule_requiredcheckbox' ); } );
♥ 0いいねをした人: 居ません2019年2月20日 3:06 PM #10716エラーがなくなりました! 早速のご対応ありがとうございました。
それから、MWフォームでもお世話になっております。
トピック閉じさせていただきます。♥ 0いいねをした人: 居ません -
投稿者投稿
- トピック「プラグインmy-snow-monkeyでのエラー」には新しい返信をつけることはできません。