'; $html = '' . $html . $validation_error . ''; return $html; } /* Validation filter */ add_filter( 'wpcf7_validate_acceptance', 'wpcf7_acceptance_validation_filter', 10, 2 ); function wpcf7_acceptance_validation_filter( $result, $tag ) { if ( ! wpcf7_acceptance_as_validation() ) return $result; $name = $tag['name']; if ( empty( $name ) ) return $result; $options = (array) $tag['options']; $value = ( ! empty( $_POST[$name] ) ? 1 : 0 ); $invert = (bool) preg_grep( '%^invert$%', $options ); if ( $invert && $value || ! $invert && ! $value ) { $result['valid'] = false; $result['reason'][$name] = wpcf7_get_message( 'accept_terms' ); } return $result; } /* Acceptance filter */ add_filter( 'wpcf7_acceptance', 'wpcf7_acceptance_filter' ); function wpcf7_acceptance_filter( $accepted ) { if ( ! $accepted ) return $accepted; $fes = wpcf7_scan_shortcode( array( 'type' => 'acceptance' ) ); foreach ( $fes as $fe ) { $name = $fe['name']; $options = (array) $fe['options']; if ( empty( $name ) ) continue; $value = $_POST[$name] ? 1 : 0; $invert = (bool) preg_grep( '%^invert$%', $options ); if ( $invert && $value || ! $invert && ! $value ) $accepted = false; } return $accepted; } add_filter( 'wpcf7_form_class_attr', 'wpcf7_acceptance_form_class_attr' ); function wpcf7_acceptance_form_class_attr( $class ) { if ( wpcf7_acceptance_as_validation() ) return $class . ' wpcf7-acceptance-as-validation'; return $class; } function wpcf7_acceptance_as_validation() { if ( ! $contact_form = wpcf7_get_current_contact_form() ) return false; $settings = $contact_form->additional_setting( 'acceptance_as_validation', false ); foreach ( $settings as $setting ) { if ( in_array( $setting, array( 'on', 'true', '1' ) ) ) return true; } return false; } /* Tag generator */ add_action( 'admin_init', 'wpcf7_add_tag_generator_acceptance', 35 ); function wpcf7_add_tag_generator_acceptance() { wpcf7_add_tag_generator( 'acceptance', __( 'Acceptance', 'wpcf7' ), 'wpcf7-tg-pane-acceptance', 'wpcf7_tg_pane_acceptance' ); } function wpcf7_tg_pane_acceptance( &$contact_form ) { ?>