2017-03-12 3 views
1

Wir verwenden das Plugin WooCommerce Memberships mit einer WooCommerce-Website, auf der Fitnessanleitungsvideos verkauft werden.E-Mail-Benachrichtigung mit abgeschlossener Bestellung: Angezeigtes benutzerdefiniertes Feld

Wir haben für jedes Video, das unser Kunde verkauft, ein WooCommerce-Produkt erstellt und auch eine WooCommerce-Mitgliedschaft, die mit diesem Produkt übereinstimmt und beim Verkauf des Produkts aktiviert wird.

Jedes Video befindet sich auf einer einzelnen WordPress-Seite, eingeschränkt basierend auf dem passenden Mitgliedschaftsplan.

Meine Frage ist:
Wie Kunden eine E-Mail-Benachrichtigung über das Produkt, das sie gekauft senden haben, die URL zur Wordpress Seite mit dem Video enthält?

Ich weiß, wir können override WooCommerce templateemails/customer-completed-order.php, aber ich weiß nicht, wie die Ausgabe eine benutzerdefinierte Zeichenfolge „die URL der Videoseite enthält“, basierend auf was WooCommerce Produkt gekauft wird.

Können Sie bei der Ausgabe einer benutzerdefinierten Zeichenfolge (mit der URL zur Videoseite) basierend auf dem Kauf des WooCommerce-Produkts helfen?

Dank

Antwort

0
function render_product_description($item_id, $item, $order){ 
    $_product = $order->get_product_from_item($item); 
    echo "<a href='.$_product->post->video_url.'>" . $_product->post->video_url. "</a>"; 

} 

add_action('woocommerce_order_item_meta_end', 'render_product_description',10,3); 

Bitte versuchen Sie diesen Code-Schnipsel in functions.php Ihr ​​Thema ist mit der notwendigen Änderung.

+0

Danke Mujeebu. Ich denke nicht, dass das WooCommerce Produkt einen 'video_url'-Wert hat. Müssen wir dem Produkt 'video_url' als benutzerdefiniertes Feld hinzufügen? – Steve

+0

Ja, Sie können es als benutzerdefiniertes Feld hinzufügen und aus den Details der Bestellposition wie oben erhalten –

1

Sie können es erreichen, ohne die Bearbeitung der WooCommerce Vorlagen gewidmet WooCommerce Aktion Haken in 2 Schritten (wenn Schritt 1 noch nicht geschehen):

  • Erstellen/Speichern eines benutzerdefinierten Feldes im Admin-Produkt Seiten allgemeine Einstellung Metabox.

  • Rendering der Link auf die zugehörige Video-Seite in Ihrer E-Mail "abgeschlossen" bestellen E-Mail-Benachrichtigung.

Hier ist dieser funktionale und getesteten Code:

# 1) Creating/Saving a custom field in the admin product pages general setting metabox. 

// Inserting product general settings custom field (set the related video page ID) 
add_action('woocommerce_product_options_general_product_data', 'product_general_settings_custom_field_create'); 
function product_general_settings_custom_field_create() { 
    echo '<div class="options_group">'; 

    woocommerce_wp_text_input(array(
     'type'    => 'text', 
     'id'    => 'video_page_id', // we save the related page ID 
     'label'    => __('Video page ID', 'woocommerce'), 
     'placeholder'  => '', 
     'description'  => __('Insert page ID', 'woocommerce'), 
    )); 

    echo '</div>'; 
} 

// Saving the custom field value when submitted (saving the related video page ID) 
add_action('woocommerce_process_product_meta', 'product_general_settings_custom_field_save'); 
function product_general_settings_custom_field_save($post_id){ 
    $wc_field = $_POST['video_page_id']; 
    if(!empty($wc_field)) 
     update_post_meta($post_id, 'video_page_id', esc_attr($wc_field)); 
} 

# 2) Rendering the related video page link in your email "completed" order email notification. 

// Displaying in completed order email notification the related video page permalink 
add_action('woocommerce_order_item_meta_end', 'displaying_a_custom_link_in_completed_order_email_notification', 10, 4); 
function displaying_a_custom_link_in_completed_order_email_notification($item_id, $item, $order, $html){ 
    // For completed orders status only 
    if ($order->has_status('completed')){ 
     // Get the custom field value for the order item 
     $page_id = get_post_meta($item['product_id'], 'video_page_id', true); 
     $page_id = '324'; 
     // Get the page Url (permalink) 
     $page_permalink = get_permalink($page_id); 
     // Get the page title (optional) 
     $page_title = get_the_title($page_id); 
     // Displaying the page link 
     echo '<br><small>' . __('Watch your video: ', 'woocommerce'). '<a href="'.$page_permalink.'">' . $page_title . '</a></small>'; 
    } 
} 

Der Kodex geht in function.php Datei Ihres aktiven Kind Thema (oder Thema) oder auch in jeder Plugin-Datei.

Verwandte Themen