programing

WooCommerce 커스텀 필드 - 다중 선택

iphone6s 2023. 3. 23. 22:23
반응형

WooCommerce 커스텀 필드 - 다중 선택

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>';

}

단, 이것은 1개의 선택 드롭다운에 불과합니다.
멀티 셀렉트도 비슷한 걸 할 수 있나요?
아니면 추천할 만한 WooCommerce 내선번호가 있습니까?

조언 부탁드립니다.잘 부탁드립니다!

사용자 정의 필드 유형 처리기를 직접 생성해야 합니다.WooCommerce 소스 코드를 보면 필터를 사용할 수 있음을 알 수 있습니다.'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>';
        }

        if ($args['required']) {
            $args['class'][] = 'validate-required';
            $required = '&nbsp;<abbr class="required" title="' . esc_attr__('required', 'woocommerce') . '">*</abbr>';
        }
        else {
            $required = '&nbsp;<span class="optional">(' . esc_html__('optional', 'woocommerce') . ')</span>';
        }

        $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>' . $args['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>';

}

이 투고에 답하기는 늦었지만, 아직 해결책을 찾고 있는 분들의 도움을 위해 이 솔루션을 추가합니다.custom_attribute를 사용하여 커스텀데이터를 추가할 수 있습니다.이것에 의해, 객관식 드롭 다운이 됩니다.

woocommerce_form_field('my_field_name',array(
   type=>"select",
   custom_attributes=>array("multiple"),
   options=>$options
));

이 woocommerce 플러그인을 사용하면 스니펫에 문제가 있는 경우 쉽게 이 작업을 수행할 수 있습니다."Woocommerce 간편 체크아웃 필드 편집기"codecanyon에서 찾을 수 있습니다.

언급URL : https://stackoverflow.com/questions/13684533/woocommerce-custom-fields-multiselect

반응형