2017-03-12 1 views
1

Nous utilisons le plugin WooCommerce Memberships avec un site Web WooCommerce qui vend des vidéos d'instructions de fitness.Personnalisation de la notification par e-mail: Affichage du champ personnalisé du produit

Nous avons créé un produit WooCommerce pour chaque vidéo vendue par notre client et également un abonnement WooCommerce correspondant à ce produit, qui est activé lorsque le produit est vendu. Chaque vidéo est sur une page WordPress individuelle, restreinte en fonction du plan d'adhésion correspondant.

Ma question est:
Comment envoyer aux clients une notification par e-mail concernant le produit qu'ils ont acheté, contenant l'URL de la page contenant la vidéo Wordpress?

Je sais que nous pouvons override WooCommerce templateemails/customer-completed-order.php, mais je ne sais pas comment produire une chaîne personnalisée « contenant l'URL de la page vidéo » basée sur ce produit WooCommerce est acheté.

Pouvez-vous nous aider à générer une chaîne personnalisée (contenant l'URL de la page vidéo) en fonction du produit WooCommerce acheté?

Merci

Répondre

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); 

S'il vous plaît essayer cet extrait de code dans le functions.php de votre thème avec les adaptations nécessaires.

+0

Merci Mujeebu. Je ne pense pas que le produit WooCommerce ait une valeur 'video_url'. Devons-nous ajouter 'video_url' en tant que champ personnalisé au produit? – Steve

+0

oui, vous pouvez l'ajouter comme un champ personnalisé et l'obtenir à partir des détails de l'article de ligne de commande comme ci-dessus –

1

Vous pouvez y arriver sans modifier les modèles de WooCommerce à l'aide de crochets d'action WooCommerce dédié en 2 étapes (si l'étape 1 ne se fait pas encore):

  • Création/Enregistrement d'un champ personnalisé dans le produit admin pages générales metabox.

  • Rendu du lien vers la page vidéo correspondante dans votre e-mail "complété" pour recevoir une notification par e-mail.

Voici ce code fonctionnel et testé:

# 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>'; 
    } 
} 

Le code va dans le fichier function.php de votre thème enfant actif (ou le thème) ou encore dans un fichier de plug-in.