Woocommerce - добавление пользовательских полей на вкладку «Оформление заказа» и «Пользовательская панель» - PullRequest
1 голос
/ 25 февраля 2020

У меня есть Multistep Checkout, и по этой причине я создал новый пользовательский шаг под названием «Данные карты», где я хочу, чтобы клиент заполнил вводные данные. Эти данные также должны отображаться на вкладке в моей учетной записи. Я уже создал новую настраиваемую вкладку для панели управления моей учетной записью. Подскажите, пожалуйста, как я могу создать настраиваемые поля в процессе оформления заказа и сделать их видимыми на вкладке Настраиваемая панель инструментов. Клиент должен иметь возможность самостоятельно изменять записи данных через панель управления.

Большое спасибо

1 Ответ

0 голосов
/ 25 февраля 2020
// i use multistep checkout wizzard plugin. here i create a step, where user 
enters the card data



add_action('woocommerce_multistep_checkout_before', 'add_visica_step');

function add_visica_step() {
$contents = '<h1>Visica Daten</h1>';
$contents .= '<div class="visica-step"> Please Enter something </div>';
echo $contents;
}


add_filter ( 'woocommerce_account_menu_items', 'one_more_link' );
function one_more_link( $menu_links ){


$new = array( 'carddata' => 'Card Data' );


$menu_links = array_slice( $menu_links, 0, 1, true ) 
+ $new 
+ array_slice( $menu_links, 1, NULL, true );


return $menu_links;
}



/*
* Step 2. Register Permalink Endpoint
*/



add_action( 'init', 'add_endpoint' );
function add_endpoint() {

// WP_Rewrite is my Achilles' heel, so please do not ask me for detailed 
explanation
add_rewrite_endpoint( 'visicadata', EP_PAGES );

}

/ * * Шаг 3. Содержимое для новой страницы в Моей учетной записи, woocommerce_account_ {ENDPOINT NAME} _endpoint * /

add_action ('woocommerce_account_visicadata_endpoint', 'my_account_endpoint_content'); function my_account_endpoint_content () {

 echo 'Here I want do display custom fields from checkout';

 }




 add_filter( 'woocommerce_checkout_fields' , 

'woocommerce_checkout_field_editor');

// Our hooked in function - $fields is passed via the filter!
 function woocommerce_checkout_field_editor( $fields ) {
 $fields['shipping']['shipping_field_value'] = array(
    'label'     => __('Field Value', 'woocommerce'),
    'placeholder'   => _x('Field Value', 'placeholder', 'woocommerce'),
    'required'  => true
   );

  return $fields;
 }

// Display Field on Order Page, but i would like to display it on custom tab

 add_action( 'woocommerce_admin_order_data_after_shipping_address', 
 'edit_woocommerce_checkout_page', 10, 1 );
 function edit_woocommerce_checkout_page($order){
   global $post_id;
   $order = new WC_Order( $post_id );
   echo '<p><strong>'.__('Field Value').':</strong> ' . get_post_meta($order->get_id(), '_shipping_field_value', true ) . '</p>';
...