2015-07-18 15 views
5

Wordpress E-Mail - WooCommerceWooCommerce individuelle Kasse Feld hinzufügen

Was ich versuche zu tun:

  • einige benutzerdefinierte Felder in der Kasse Seite hinzufügen.
  • Senden Sie auch den Wert dieser Felder an meine E-Mail, wenn Sie eine neue Bestellung erhalten.

Das ist, was ich tat, aber nicht:

Ich folge dem Tutorial hier: http://docs.woothemes.com/document/tutorial-customising-checkout-fields-using-actions-and-filters/

Alles gut geht, habe ich die Felder erfolgreich und sie erscheinen in der Reihenfolge der Seiten Einstellung:

add_action('woocommerce_after_order_notes', 'my_checkout_fields'); 

function my_checkout_fields($checkout) { 

echo '<div id="my_checkout_fields"><h2>' . __('My Heading') . '</h2>'; 

woocommerce_form_field('my_field', array(
    'type'  => 'select', 
    'options' => array(
     'option_1' => 'My Option 1', 
     'option_2' => 'My Option 2' 
    ), 
    'clear'  => false, 
    'class'   => array('form-row-wide'), 
    'label'   => __('Whatever') 
    ), $checkout->get_value('my_field')); 

echo '</div>'; 

} 

/** 
* Update the order meta with field value 
*/ 
add_action('woocommerce_checkout_update_order_meta','my_custom_checkout_field_update_order_meta'); 

function my_custom_checkout_field_update_order_meta($order_id) { 
if (! empty($_POST['my_field'])) { 
    update_post_meta($order_id, 'My Field', sanitize_text_field($_POST['my_field'])); 
} 
} 
} 

Dann habe ich versucht, sie in die E-Mail-Bestellung meta hinzufügen, wie bei dem ‚Lektion 4‘ Abschnitt im Tutorial gezeigt:

add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys'); 
function my_custom_checkout_field_order_meta_keys($keys) { 
    $keys[] = 'my_field'; 
    return $keys; 
} 

Die benutzerdefinierten Felder werden jedoch nicht in der gesendeten E-Mail angezeigt.

Ich habe auch zu testen versucht, durch diese Datei in der E-Mail-Vorlage zu tun:

<p><?php echo $order->my_field; ?></p> 

Nichts wird in der E-Mail gedruckt.

Lösung bitte. Danke im Voraus.

+0

posten Sie Ihren Code bitte so ist es einfach zu sagen, das Problem fügen –

+0

die Kommentare in diesen über den Code angegeben prüfen link..https: //gist.github.com/mikejolley/1547491 – WisdmLabs

+0

Danke für die Antworten. Ich poste auch meine Codes für das Erstellen des Feldes auf der Checkout-Seite oben. @WisdmLabs Ja, das war die Anweisung, der ich folgte, aber es hat nicht funktioniert. Das einzige, was ich falsch gemacht habe, ist der "Tracking Code", aber ist es in meinem Fall nicht "my_field"? – Wei

Antwort

4

Sie sollten "Mein Feld" anstelle von my_field verwenden. Wie Sie das benutzerdefinierte Feld mit dieser Taste gespeichert haben. Dies wird definitiv Ihr Problem lösen.

0

Ich hatte ähnliche Probleme beim Drucken des Ergebnisses, bis ich einen Unterstrich vor 'my_field' hinzugefügt habe. So

verwenden

add_filter('woocommerce_email_order_meta_keys', 'my_custom_checkout_field_order_meta_keys'); 
function my_custom_checkout_field_order_meta_keys($keys) { 
    $keys[] = '_my_field'; 
    return $keys; 
} 

es scheint, als WooCommerce ist die Meta-Daten zur Verwendung in Admin-Bereich abfragt, wird ein Unterstrich hinzugefügt. Also für ein Feld erstellt Sie als

add_filter('woocommerce_checkout_fields' , 'brown_remove_billing_postcode_checkout'); 

function brown_remove_billing_postcode_checkout($fields) { 

    // Add New Fields 
    $fields['billing']['billing_delivery_date'] = array(
     'label'  => __('Delivery Date', 'woocommerce'), 
     'placeholder' => _x('yyyy-mm-dd', 'placeholder', 'woocommerce'), 
     'required' => true, 
     'class'  => array('form-row-wide'), 
     'clear'  => true, 
     'autocomplete' => false 
    ); 

//Update the order meta with field value. Don't miss the underscore before _b 
$fields['billing_delivery_date'] = get_post_meta($order->id, '_billing_delivery_date', true); 

    return $fields; 
} 

Sie müssen Ihre functions.php

/*---------------------------------------------- 
    Add Delivery Date Field to the order emails 
-------------------------------------------------*/ 
add_filter('woocommerce_email_order_meta_keys', 'my_woocommerce_email_order_meta_keys'); 

function my_woocommerce_email_order_meta_keys($keys) { 
    $keys['Delivery Date'] = '_billing_delivery_date'; 
    return $keys;  
} 
Verwandte Themen