您只需将 html5 required 属性添加到字段即可将字段设为必填。
'example_input' => array(
'name' => __('My Input', 'woocommerce-my-custom-tab'),
'type' => 'text',
'desc' => '',
'custom_attributes' => array( 'required' => 'required' )
'id' => 'wc_my_input'
),
但在您的情况下,如果您想在字段更新时显示错误消息,您可以执行类似的操作。添加过滤器woocommerce_admin_settings_sanitize_option_<option_name>
// define the woocommerce_admin_settings_sanitize_option_<option_name> callback
function filter_woocommerce_admin_settings_sanitize_option_wc_my_input( $value, $option, $raw_value ) {
add_action( 'admin_notices', function() use($value) {
if($value == ""){
echo '<div id="message" class="notice notice-error is-dismissible"><p>Option is required</p></div>';
}
});
return $value;
};
// add the filter
add_filter( "woocommerce_admin_settings_sanitize_option_wc_my_input", 'filter_woocommerce_admin_settings_sanitize_option_wc_my_input', 10, 3 );
Edit
您可以像这样循环遍历所有选项
$options = ['wc_my_input' => 'My Input', 'other_field' => 'Other Field']; // get all the options here
foreach($options as $option_name => $option_val){
// define the woocommerce_admin_settings_sanitize_option_$option_name callback
add_filter( "woocommerce_admin_settings_sanitize_option_$option_name", function($value, $option, $raw_value) use($option_val) {
add_action( 'admin_notices', function() use($value) {
if($value == ""){
echo "<div id=\"message\" class=\"notice notice-error is-dismissible\"><p>$option_val is required</p></div>";
}
});
return $value;
}, 10, 3 );
}