Получить опции выбора полей из пользовательской таблицы БД в оформлении заказа WooCommerce - PullRequest
1 голос
/ 07 мая 2019

В базе данных WordPress у меня есть таблица с именем tab_clients В этой таблице у меня есть следующие столбцы: идентификатор, имя, cpf, cnpj, т. е. razao_social, электронная почта, телефон, мобильный телефон, представитель (идентификатор пользователя WordPress), статус, фотография, date_since, data_cadastro

Мне нужно перенести эти значения в поле выбора в форме оформления заказа в woocommerce, но когда я объявляю переменную 'options' => array ($ client-> name), она приносит мне только один результат.

add_action( 'woocommerce_after_order_notes', 'cliente_woocommerce' ); 
function cliente_woocommerce( $checkout ) { 
echo '<div id="cliente_woocommerce"><h2>' . __('Cliente') . '</h2>'; 
$clientes = $wpdb->get_results( "SELECT id, nome, cnpj FROM tab_clientes" );
foreach($clientes as $cliente);

woocommerce_form_field( 'cliente', array( 
    'type' => 'select', 
    'class' => array('cliente form-row-wide'), 
    'label' => __('Campo de Teste (Cliente)'), 
    'placeholder' => __('Selecione o cliente'), 
    'options'   =>  array($cliente->nome), 
), $checkout->get_value( 'cliente' ) );

echo '</div>';

1 Ответ

0 голосов
/ 07 мая 2019

Попробуйте следующий пересмотренный код, который даст вам правильный массив опций с несколькими значениями для этого поля пользовательского выбора оформления заказа:

add_action( 'woocommerce_after_order_notes', 'cliente_woocommerce' ); 
function cliente_woocommerce( $checkout ) 
{ 
    global $wpdb;

    $results = $wpdb->get_results( "SELECT id, nome, cnpj FROM tab_clientes" );
    $otions  = array( '' => __('Selecione o cliente') );

    // Loop through the data query results
    foreach($results as $result) {
        $options[$result->id] = $result->nome;
    }

    echo '<div id="cliente_woocommerce"><h2>' . __('Cliente') . '</h2>';

    woocommerce_form_field( 'cliente', array( 
        'type' => 'select', 
        'class' => array('cliente form-row-wide'), 
        'label' => __('Campo de Teste (Cliente)'), 
        'options'   =>  $options, 
    ), $checkout->get_value( 'cliente' ) );

    echo '</div>';
}
...