我添加额外的字段在WooCommerce结帐页面,我可以添加基本领域,如一个文本框,但需要增加一个(多)选择框,用户可以选择多个项目。 我已经想通了如何通过代码添加一个选择框,如下所示:
add_action('woocommerce_after_order_notes', 'my_custom_checkout_field');
function my_custom_checkout_field( $checkout ) {
echo '<div id="my_custom_checkout_field"><h3>'.__('My Field').'</h3>';
woocommerce_form_field( 'my_field_name', array(
'type' => 'select',
'class' => array('my-field-class form-row-wide'),
'label' => __('Fill in this field'),
'placeholder' => __('Enter something'),
'options' => array(
'Buick' => __('Buick', 'woocommerce' ),
'Ford' => __('Ford', 'woocommerce' )
)
), $checkout->get_value( 'my_field_name' ));
echo '</div>';
}
但是,这只是一个单一的选择下拉。
我可以做一个多选类似的东西?
还是你有你会推荐一个WooCommerce扩展?
请指点,在此先感谢!
您需要创建自己的自定义字段类型的处理程序。 如果你看一下WooCommerce源代码,你会看到,你可以使用过滤器: 'woocommerce_form_field_' . $args['type']
'woocommerce_form_field_' . $args['type']
我还没有真正测试了这一点,这是由单一的“选择”控制只是稍加改动代码,但你明白了吧:
add_filter( 'woocommerce_form_field_multiselect', 'custom_multiselect_handler', 10, 4 );
function custom_multiselect_handler( $field, $key, $args, $value ) {
$options = '';
if ( ! empty( $args['options'] ) ) {
foreach ( $args['options'] as $option_key => $option_text ) {
$options .= '<option value="' . $option_key . '" '. selected( $value, $option_key, false ) . '>' . $option_text .'</option>';
}
$field = '<p class="form-row ' . implode( ' ', $args['class'] ) .'" id="' . $key . '_field">
<label for="' . $key . '" class="' . implode( ' ', $args['label_class'] ) .'">' . $args['label']. $required . '</label>
<select name="' . $key . '" id="' . $key . '" class="select" multiple="multiple">
' . $options . '
</select>
</p>' . $after;
}
return $field;
}
而在你的代码只是声明类型为“多选”:
add_action('woocommerce_after_order_notes', 'my_custom_checkout_field');
function my_custom_checkout_field( $checkout ) {
echo '<div id="my_custom_checkout_field"><h3>'.__('My Field').'</h3>';
woocommerce_form_field( 'my_field_name', array(
'type' => 'multiselect',
'class' => array('my-field-class form-row-wide'),
'label' => __('Fill in this field'),
'placeholder' => __('Enter something'),
'options' => array(
'Buick' => __('Buick', 'woocommerce' ),
'Ford' => __('Ford', 'woocommerce' )
)
), $checkout->get_value( 'my_field_name' ));
echo '</div>';
}
您可以使用此插件woocommerce很容易做,如果您有片断的问题。 “Woocommerce易结帐字段编辑器”。 你可以在codecanyon找到它