menu

information WordPress

HOMEWordPress MW WP FORM いずれか必須項目にしたい

2023年02月27日

MW WP FORM いずれか必須項目にしたい

メールアドレスが記入されたときは電話番号は未記入でOK
電話番号が記入されたときはメールアドレスは未記入でOKのように
どちらか必須にしたい場合

functions.php に追記

//いずれか必須項目
if ( class_exists( 'MW_WP_Form_Abstract_Validation_Rule' ) ) {
	class MW_WP_Form_Validation_Rule_AnyRequired extends MW_WP_Form_Abstract_Validation_Rule {
		protected $name = 'anyrequired';

		public function rule( $key, array $options = array() ) {
			$value = $this->Data->get( $key );

			if ( empty( $this->Data->gets() ) ) {
				return;
			}

			$targets = array_map( 'trim', explode( ',', $options['target'] ) );
			array_unshift( $targets, $key );

			$count = 0;
			foreach ( $targets as $target ) {
				$target_value = $this->Data->get( $target );
				if ( ! empty( $target_value ) || ! MWF_Functions::is_empty( $target_value ) ) {
					$count++;
				}
			}
			if ( $count == 0 ) {
				$defaults = array(
					'target' => null,
					'message' => sprintf( 'どちらか入力してください。', implode( ', ', $targets ) )
				);
				$options = array_merge( $defaults, $options );
				return $options['message'];
			}
		}

		public function admin( $key, $value ) {
			$target = '';
			if ( is_array( $value[$this->get_name()] ) && isset( $value[$this->get_name()]['target'] ) ) {
				$target = $value[$this->get_name()]['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->get_name() ); ?>][target]" />
						<span class="mwf_note">(カンマ区切り)</span>
					</td>
				</tr>
			</table>
			<?php
		}
	}

	function mwform_validation_rule_anyrequired( $validation_rules ) {
		$instance = new MW_WP_Form_Validation_Rule_AnyRequired();
		$validation_rules[$instance->get_name()] = $instance;
		return $validation_rules;
	}

	add_filter( 'mwform_validation_rules', 'mwform_validation_rule_anyrequired' );
}

参考サイト:https://xakuro.com/blog/wordpress/1991/

会社案内はこちら

〒410-0822
静岡県沼津市下香貫宮脇200-3

055-935-1339

営業時間 9:00~18:00

お問い合わせ