Выберите поле формы WooCommerce в корзине со списком пользовательских типов записей. - PullRequest
1 голос
/ 26 апреля 2020

Я создал пользовательский тип записи good_cause . Я могу вытащить заголовок пользовательского типа сообщения и заполнить раскрывающийся список в корзине.

То, что я пытаюсь выполнить sh, заключается в том, чтобы заголовки поста были параметрами в поле woocommerce_form_form вместо stati c значение .

<?php

add_action('woocommerce_before_order_notes', 'wps_add_select_checkout_field');
function wps_add_select_checkout_field( $checkout ) {

echo '<h2>'.__('Select a Good Cause').'</h2>';




$args = array(
        'post_type' => 'good_cause',
        'posts_per_page' => -1,
    );
$query = new WP_Query($args);

if ($query->have_posts() ) : 
    echo '<select>';
    while ( $query->have_posts() ) : $query->the_post();
            echo '<option value="' . get_the_ID() . '">' . get_the_title() . '</option>';


    endwhile;
    echo '</select>';
    wp_reset_postdata();
 endif;



    woocommerce_form_field( 'daypart', array(
        'type'          => 'select',
        'class'         => array( 'wps-drop' ),
        'label'         => __( 'Delivery options' ),


        'options'       => array(
            'blank'     => __( 'Select a day part', 'wps' ),
            'morning'   => __( 'In the morning', 'wps' ),
            'afternoon' => __( 'In the afternoon', 'wps' ),
            'evening'   => __( 'In the evening', 'wps' )
        )
 ),

    $checkout->get_value( 'daypart' ));

}

1 Ответ

0 голосов
/ 26 апреля 2020

Вместо печати этих (эхо) вы можете добавить значения в массив $options, а затем использовать этот массив как woocommerce_form_field( 'options' );

function wps_add_select_checkout_field( $checkout ) {
    echo '<h2>'.__('Select a Good Cause').'</h2>';

    $args = array(
        'post_type' => 'good_cause',
        'posts_per_page' => -1,
    );
    $query = new WP_Query($args);

    // Set variable (array)
    $options = array();

    if ( $query->have_posts() ) :
        while ( $query->have_posts() ) : $query->the_post();
            // Add to $options array
            $options[get_the_ID()] = get_the_title();
        endwhile;
        wp_reset_postdata();
     endif;

    woocommerce_form_field( 'daypart', array(
        'type'          => 'select',
        'class'         => array( 'wps-drop' ),
        'label'         => __( 'Delivery options' ),
        'options'       => $options
    ), $checkout->get_value( 'daypart' ));

}
add_action('woocommerce_before_order_notes', 'wps_add_select_checkout_field', 10, 1 );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...