我在woocommerce中添加了一个复选框字段,我只想在帐户屏幕上查看其结果。我使用以下示例添加了该复选框:
'register-checkboxes' => array(
'type' => 'checkboxes',
'label' => __( 'Regions of Construction', 'woo' ),
'options' => array(
'qld1' => __( 'QLD Zone Q1', 'woo' ),
'qld2' => __( 'QLD Zone Q2', 'woo' ),
'qld3' => __( 'QLD Zone Q3', 'woo' ),
),
'hide_in_registration' => true,
'required' => true,
),
但是当我添加时:
$field_args['custom_attributes'] = array( 'disabled' => 'disabled' );
在“帐户”屏幕上,此功能用于禁用文本输入,并选择但不选中复选框选项。
我正在使用:https://rudrastyh.com/woocommerce/woocommerce_form_field.html作为指导,但是看来您无法将自定义属性数组传递给复选框的每个选项?我想念什么?
答案 0 :(得分:1)
woocommerce_form_field()
函数在复选框输入类型上不提供此功能,请参见此处:
case 'checkbox':
$field = '<label class="checkbox ' . implode( ' ', $args['label_class'] ) . '" ' . implode( ' ', $custom_attributes ) . '>
<input type="' . esc_attr( $args['type'] ) . '" class="input-checkbox ' . esc_attr( implode( ' ', $args['input_class'] ) ) . '" name="' . esc_attr( $key ) . '" id="' . esc_attr( $args['id'] ) . '" value="1" ' . checked( $value, 1, false ) . ' /> ' . $args['label'] . $required . '</label>';
使用jQuery
无效的输入字段谢谢
答案 1 :(得分:0)
尝试使用此jQuery
jQuery(function($){
$('#Chekbox_Id_Here').attr('checked', false);
});
希望对您有帮助
谢谢。
答案 2 :(得分:0)
我添加了:
add_filter( 'woocommerce_form_field_checkboxes', array( $this,'pm_form_field_modify' ), 10, 4);
然后
public function pm_form_field_modify( $field, $key, $args, $value ) {
ob_start();
$this->pm_print_list_field( $key, $args, $value );
$field = ob_get_clean();
if ( $args['return'] ) {
return $field;
} else {
echo $field;
}
}
然后输出
public function pm_print_list_field( $key, $field_args, $value = null ) {
$value = empty( $value ) && $field_args['type'] === 'checkboxes' ? array() : $value;
?>
<div class="form-row">
<?php
// Disable the checkboxes for Zones
if ($field_args['id'] == 'register-checkboxes' && !is_admin()) {
$field_args['custom_attributes'] = array( 'disabled' => 'disabled' );
}
if ( ! empty( $field_args['label'] ) ) { ?>
<label>
<?php echo $field_args['label']; ?>
<?php if ( ! empty( $field_args['required'] ) ) { ?>
<abbr class="required" title="<?php echo esc_attr__( 'required', 'woocommerce' ); ?>">*</abbr>
<?php } ?>
</label>
<?php } ?>
<ul>
<?php foreach ( $field_args['options'] as $option_value => $option_label ) {
$id = sprintf( '%s_%s', $key, sanitize_title_with_dashes( $option_label ) );
$option_key = $field_args['type'] === 'checkboxes' ? sprintf( '%s[%s]', $key, $option_value ) : $key;
$type = $field_args['type'] === 'checkboxes' ? 'checkbox' : $field_args['type'];
$checked = $field_args['type'] === 'checkboxes' ? in_array( $option_value, $value ) : $option_value == $value;
?>
<li>
<label for="<?php echo esc_attr( $id ); ?>">
<input type="<?php echo esc_attr( $type ); ?>" id="<?php echo esc_attr( $id ); ?>" name="<?php echo esc_attr( $option_key ); ?>" value="<?php echo esc_attr( $option_value ); ?>" <?php checked( $checked );
// Disable the checkboxes
if ( isset($field_args['custom_attributes']['disabled']) ) {
echo 'disabled="disabled"';
}
?>>
<?php echo $option_label; ?>
</label>
</li>
<?php } ?>
</ul>
</div>
<?php
}
这将禁用复选框组。