我在我的functions.php 中為兩個欄位添加了驗證。這些驗證欄位只能接受字母/數字而不能接受特殊字符。它作業正常,但不幸的是,欄位 'tussenvoegsel' 不能留空,這也必須是可能的。
// VALIDATIE INPUT FIELDS (GEEN CIJFERS MOGELIJK ALS INPUT)
add_filter( 'wpcf7_validate_text', 'alphanumeric_validation_filter', 20, 2 );
add_filter( 'wpcf7_validate_text*', 'alphanumeric_validation_filter', 20, 2 );
function alphanumeric_validation_filter( $result, $tag ) {
$tag = new WPCF7_Shortcode( $tag );
if ( 'familienaam' == $tag->name ) {
$name_of_the_input = isset( $_POST['familienaam'] ) ? trim( $_POST['familienaam'] ) : '';
if ( !preg_match('/^[a-zA-Z0-9] $/',$name_of_the_input) ) {
$result->invalidate( $tag, "Alleen letters zijn toegestaan." );
}
}
if ( 'tussenvoegsel' == $tag->name ) {
$name_of_the_input = isset( $_POST['tussenvoegsel'] ) ? trim( $_POST['tussenvoegsel'] ) : '';
if ( !preg_match('/^[a-zA-Z0-9] $/',$name_of_the_input) ) {
$result->invalidate( $tag, "Alleen letters zijn toegestaan." );
}
}
return $result;
}
這很奇怪,因為 'tussenvoegsel' 插件中的條目沒有 *. 即使我也需要驗證,我可以添加什么來保持 'tussenvoegel' 條目仍然是可選的。
[text tussenvoegsel placeholder "voorvoegsel"]
[text* familienaam placeholder "Achternaam"]
uj5u.com熱心網友回復:
在您的函式中,您正在驗證 CF7 欄位,但您沒有檢查該欄位是否是必需的。在這種情況下,它將始終通過驗證過濾器運行您的函式,并要求輸入是字母數字,無論該欄位是否需要。
add_filter( 'wpcf7_validate_text', 'alphanumeric_validation_filter', 20, 2 );
add_filter( 'wpcf7_validate_text*', 'alphanumeric_validation_filter', 20, 2 );
function alphanumeric_validation_filter( $result, $tag ) {
$tag = new WPCF7_Shortcode( $tag );
if ( 'familienaam' === $tag->name ) {
$name_of_the_input = isset( $_POST['familienaam'] ) ? trim( $_POST['familienaam'] ) : '';
// Check if the field is empty or required.
if ( ! empty( $name_of_the_input ) || $tag->is_required() ) {
if ( !preg_match('/^[a-zA-Z0-9] $/', $name_of_the_input ) ) {
$result->invalidate( $tag, 'Alleen letters zijn toegestaan.' );
}
}
}
if ( 'tussenvoegsel' === $tag->name ) {
$name_of_the_input = isset( $_POST['tussenvoegsel'] ) ? trim( $_POST['tussenvoegsel'] ) : '';
// Check if the field is empty or required.
if ( ! empty( $name_of_the_input ) || $tag->is_required() ) {
if ( ! preg_match( '/^[a-zA-Z0-9] $/', $name_of_the_input ) ) {
$result->invalidate( $tag, 'Alleen letters zijn toegestaan.' );
}
}
}
return $result;
}
uj5u.com熱心網友回復:
在此處使用官方檔案進行自定義驗證https://contactform7.com/2015/03/28/custom-validation/
add_filter( 'wpcf7_validate_text', 'alphanumeric_validation_filter', 20, 2 );
add_filter( 'wpcf7_validate_text*', 'alphanumeric_validation_filter', 20, 2 );
function alphanumeric_validation_filter( $result, $tag ) {
if ( 'familienaam' == $tag->name ) {
$familienaam= isset( $_POST['familienaam'] ) ? trim( $_POST['familienaam'] ) : '';
if ( !ctype_alnum( $familienaam) ) {
$result->invalidate( $tag, "Alleen letters zijn toegestaan." );
}
}
if ( 'tussenvoegsel' == $tag->name ) {
$tussenvoegsel = isset( $_POST['tussenvoegsel'] ) ? trim( $_POST['tussenvoegsel'] ) : '';
if ( !ctype_alnum( $tussenvoegsel ) ) {
$result->invalidate( $tag, "Alleen letters zijn toegestaan." );
}
}
return $result;
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/359050.html
標籤:WordPress的 验证 插件 联系表格 7
