2015-09-23 4 views
0

Мне нужна помощь в интеграции типов пользовательских сообщений в страницу проверки Woocommerce - мне нужно заполнить все пользовательские поля, связанные с CPT, на основе выбора, сделанного из поля selct, который заполняет автомобили CPT для пользователь вошел в систему -Интеграция полей CPT в страницу проверки Woocommerce

woocommerce_form_field('car_sel', array(
    'type'   => 'select', 
    'class'   => 'populate-cars', 
    'label'   => __('Car for this Event'), 
    'options' => my_acf_load_field(array($carname)), 
    ), $checkout->get_value('car_sel')); 
function my_acf_load_field($field) 
{ 

    get_currentuserinfo(); 
$id = get_current_user_id(); 

$args = array(
    'author'  => $id, 
    'posts_per_page' => -1, 
    'orderby'   => 'post_title', 
    'order'   => 'ASC', 
    'post_type'  => 'car', 
    'post_status'  => 'publish'); 

$posts = get_posts($args); 

foreach ($posts as $post) { 
    $carname[$post->post_title] = $post->post_title; 

} 


// Important: return the field 
return $carname; 

} 

Теперь нужно заполнить поля, как марка, модель & куб.см в поле WooCommerce и передать их на электронную почту - я также хочу, чтобы изменить переменные в зависимости от выбора - Так что мне нужно OnChange функциональность

Может ли кто-нибудь мне помочь? Борьба за получение метазначений на основе заголовка сообщения - ничего не работает :(

ответ

0

Я написал очень подробно о customizing the WooCommerce checkout. Вот первая часть (отображающая поле формы в кассе, адаптированное к вашим опциям выбора. вы начнете получать действительно длинные списки автомобилей, вы можете посмотреть в Transient API кэшировать $posts значения Также для справки, wp_list_pluck() является удивительным

function kia_get_car_names_checkout_options(){ 

    $args = array(
     'author'   => get_current_user_id(), 
     'posts_per_page' => -1, 
     'orderby'   => 'post_title', 
     'order'   => 'ASC', 
     'post_type'  => 'car', 
     'post_status'  => 'publish'); 

    $posts = get_posts($args); 

    $car_names = wp_list_pluck($posts, 'post_title', 'ID'); 

    return $car_names; 
} 

// Add a new checkout field 
function kia_filter_checkout_fields($fields){ 
    $fields['extra_fields'] = array(
      'another_field' => array(
       'type' => 'select', 
       'options' => kia_get_car_names_checkout_options(), 
       'required'  => true, 
       'label' => __('Another field') 
       ) 
      ); 

    return $fields; 
} 
add_filter('woocommerce_checkout_fields', 'kia_filter_checkout_fields'); 


// display the extra field on the checkout form 
function kia_extra_checkout_fields(){ 

    $checkout = WC()->checkout(); ?> 

    <div class="extra-fields"> 
    <h3><?php _e('Additional Fields'); ?></h3> 

    <?php 
    // because of this foreach, everything added to the array in the previous function will display automagically 
    foreach ($checkout->checkout_fields['extra_fields'] as $key => $field) : ?> 

      <?php woocommerce_form_field($key, $field, $checkout->get_value($key)); ?> 

     <?php endforeach; ?> 
    </div> 

<?php } 
add_action('woocommerce_checkout_after_customer_details' ,'kia_extra_checkout_fields'); 
+0

спасибо Хельги. -. это работало отлично –

+0

Sure Если!. это сработало, тогда вы должны «принять» это как ответ. – helgatheviking

+0

только одна небольшая проблема - это сохраняя значение, как в идентификаторе полей автомобиля для всех. Это любой простой способ сохранить текст опции для выпадающего, а не значения? –

Смежные вопросы