Как я могу сделать значение настраиваемого поля обязательным (обязательным) на странице продукта woocommerce при добавлении продукта
Я добавил пользовательское поле текстового поля на своей странице добавления продукта в woocommerce. Теперь я хочу сделать это обязательным (обязательным). Я попробовал это, передав аргумент "требуется"=>true. но это не работает. Пожалуйста, смотрите ниже код
woocommerce_wp_text_input(
array(
'id' => 'special_price',
'label' => __( 'Wholesaler Price *', 'woocommerce' ),
'placeholder' => '',
'desc_tip' => 'true',
'required' => 'true',
'description' => __( 'Enter wholesaler price here.', 'woocommerce' )
)
);
Но это не делает текстовое поле обязательным. Пожалуйста, кто-нибудь может сказать, как я могу это сделать?
2 answers
Для атрибута required
HTML5 и других пользовательских атрибутов woocommerce_wp_text_input()
функция имеет опцию custom_attributes
.
woocommerce_wp_text_input(
array(
'id' => 'special_price',
'label' => __( 'Wholesaler Price *', 'woocommerce' ),
'placeholder' => '',
'desc_tip' => 'true',
'custom_attributes' => array( 'required' => 'required' ),
'description' => __( 'Enter wholesaler price here.', 'woocommerce' )
)
);
Вы можете изменить следующий код в соответствии с вашими потребностями.
// Validate when adding to cart
add_filter( 'woocommerce_add_to_cart_validation', 'woocommerce_add_to_cart_validation_custom', 10, 3 );
/ validation
function woocommerce_add_to_cart_validation_custom($passed, $product_id, $qty){
global $woocommerce;
$option = ''; // your custom field's name
if( isset($_POST[sanitize_title($option)]) && $_POST[sanitize_title($option)] == '' )
$passed = false;
if (!$passed)
$woocommerce->add_error( sprintf( __('"%s" is a required field.', 'woocommerce'), $option) );
return $passed;
}
Для еще большего количества опций при добавлении товара в корзину вы можете найти Как добавить пользовательское значение текстового поля в массив сеансов корзины в Woocommerce мой этот ответ полезен.