2017-10-19 6 views
1

Ich verwende ein benutzerdefiniertes Checkout-Feld, um meinen Kunden eine "Ship to a business address" -Option auf der Checkout-Seite meines Woocommerce-Shops zu geben. Der Großteil des Codes funktioniert ordnungsgemäß, aber ich kann nicht anzeigen, ob sie das Feld in den Admin-Bestelldetails im Backend aktiviert haben.Woocommerce benutzerdefinierte Felddaten auf Admin-Bestelldetails anzeigen

Ich habe eine eigene Kasse Feld meinen WooCommerce Shop hinzugefügt und gespeichert, die Daten in der Reihenfolge meta:

//add custom checkout field 
add_filter('woocommerce_after_checkout_billing_form', 'gon_business_address_checkbox_field'); 

function gon_business_address_checkbox_field($checkout){ 
    woocommerce_form_field('business_address_checkbox', array(
     'label'  => __('<h3 id="business_address_label">Check this box if you are shipping to a business.</h3>', 'woocommerce'), 
     'required' => false, 
     'clear'  => false, 
     'type'  => 'checkbox' 
    ), $checkout->get_value('business_address_checkbox')); 
} 


//update order meta 
add_action('woocommerce_checkout_update_order_meta', 'gon_update_order_meta_business_address'); 

function gon_update_order_meta_business_address($order_id) { 
    if ($_POST['business_address_checkbox']) update_post_meta($order_id, 'Business Address?', 
    esc_attr($_POST['business_address_checkbox'])); 
} 

Hier ist, wo ich versuche, auf dem Server-Betreiber, um den Abschnitt diese Daten anzuzeigen. Ich habe die vorhergehenden Themen so genau wie möglich verfolgt, aber ohne Erfolg.

Ist dieses Problem möglicherweise, weil ich das Kontrollkästchen nicht in der richtigen Weise verwende? Das Merkwürdige ist, dass ich die Informationen über die Bestellung von E-Mails zu drucken, wie ich mit diesem Code wünsche ich immer:

add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys'); 
function my_custom_checkout_field_order_meta_keys() { 
    if($_POST['business_address_checkbox']){ 
     $ship_to = 'YES'; 
    } else { 
     $ship_to = 'NO'; 
    } 
    echo '<h3>Ship to a business address? : '.$ship_to.'</h3>'; 
} 

Antwort

1

Wie Sie dieses Feld werden Daten speichern, mit der meta_key: 'Business Address?' ... Also Sie müssen diese meta_key verwenden, um die Daten auf diese Weise abzurufen:

// Display field value on the admin order edit page 
add_action('woocommerce_admin_order_data_after_shipping_address', 'custom_checkout_field_display_admin_order_meta', 10, 1); 
function custom_checkout_field_display_admin_order_meta($order){ 
    $business_address = get_post_meta($order->get_id(), 'Business Address?', true); 
    if(! empty($business_address)) 
     echo '<p><strong>'.__('Ship to a Business Address', 'woocommerce').': </strong> ' . $business_address . '</p>'; 
} 

-Code geht in function.php Datei Ihrer aktiven Kind Thema (oder Thema) oder auch in jedem Plugin-Datei.

Getestet auf WooCommerce 3 und funktioniert.

+0

Vielen Dank @LoicTheAztec. Es scheint, dass ich die Funktion update_post_meta() falsch verstanden habe. Jetzt richtig arbeiten! U sind ein wahrer Krieger in meinen Augen. – peanutSquiggle

Verwandte Themen