2016-07-07 3 views
0

В основном, я бы хотел отобразить купон, используемый на Woocommerce thankyou.php. Вот код, который я добавилПоказать описание купона и идентификатор на thankyou.php

$coupons = $order->get_items('coupon'); 
foreach ($coupons as $item_id => $item) { 
echo "<span class='coupon-name'><b>".$item['name']."</b></span>"; 
$post = get_post($item_id); 
echo "<p class='coupon-description'>".$post->post_excerpt."</p>"; 
} 

Однако, только код купона показывается в то время как описания нет.

Вот где я разместил свой код:

if (! defined('ABSPATH')) { 
exit; 
} 


if ($order) : ?> 



<?php if ($order->has_status('failed')) : ?> 

    <p class="woocommerce-thankyou-order-failed"><?php _e('Unfortunately your order cannot be processed as the originating bank/merchant has declined your transaction. Please attempt your purchase again.', 'woocommerce'); ?></p> 

    <p class="woocommerce-thankyou-order-failed-actions"> 
     <a href="<?php echo esc_url($order->get_checkout_payment_url()); ?>" class="button pay"><?php _e('Pay', 'woocommerce') ?></a> 
     <?php if (is_user_logged_in()) : ?> 
      <a href="<?php echo esc_url(wc_get_page_permalink('myaccount')); ?>" class="button pay"><?php _e('My Account', 'woocommerce'); ?></a> 
     <?php endif; ?> 
    </p> 

<?php else : ?> 

    <?php 
     $coupons = $order->get_items('coupon'); 
     foreach ($coupons as $item_id => $item) { 
      echo "<span class='coupon-name'><b>".$item['name']."</b></span>"; 
      $post = get_post($item_id); 
      echo "<p class='coupon-description'>".$post->post_excerpt."</p>"; 
     } 
    ?> 

    <p class="woocommerce-thankyou-order-received"><?php echo apply_filters('woocommerce_thankyou_order_received_text', __('Thank you. Your order has been received.', 'woocommerce'), $order); ?></p> 

    <ul class="woocommerce-thankyou-order-details order_details"> 
     <li class="order"> 
      <?php _e('Order Number:', 'woocommerce'); ?> 
      <strong><?php echo $order->get_order_number(); ?></strong> 
     </li> 
     <li class="date"> 
      <?php _e('Date:', 'woocommerce'); ?> 
      <strong><?php echo date_i18n(get_option('date_format'), strtotime($order->order_date)); ?></strong> 
     </li> 
     <li class="total"> 
      <?php _e('Total:', 'woocommerce'); ?> 
      <strong><?php echo $order->get_formatted_order_total(); ?></strong> 
     </li> 
     <?php if ($order->payment_method_title) : ?> 
     <li class="method"> 
      <?php _e('Payment Method:', 'woocommerce'); ?> 
      <strong><?php echo $order->payment_method_title; ?></strong> 
     </li> 
     <?php endif; ?> 
    </ul> 
    <div class="clear"></div> 

<?php endif; ?> 

<?php do_action('woocommerce_thankyou_' . $order->payment_method, $order->id); ?> 
<?php do_action('woocommerce_thankyou', $order->id); ?> 
<p class="woocommerce-thankyou-order-received"><?php echo apply_filters('woocommerce_thankyou_order_received_text', __('Thank you. Your order has been received.', 'woocommerce'), null); ?></p> 

Может кто-нибудь пожалуйста, помогите мне с этим?

+0

вы можете объяснить, какой тип описание это? –

+0

Это описание купона. – user6561526

ответ

0
please use this code hope so it will work for you : 
<?php 
add_action('woocommerce_thankyou', 'apply_product_on_coupon'); 
function apply_product_on_coupon() { 
     global $woocommerce; 

     if (! empty($woocommerce->cart->applied_coupons)) { 
      $my_coupon = $woocommerce->cart->get_coupons() ; 
      foreach($my_coupon as $coupon){ 

       if ($post = get_post($coupon->id)) { 
         if (!empty($post->post_excerpt)) { 
          echo "<span class='coupon-name'><b>".$coupon->code."</b></span>"; 
          echo "<p class='coupon-description'>".$post->post_excerpt."</p>"; 
         } 
       } 
      } 
     } 
    } ?> 

, если это не будет работать, то использовать купон SHORTCODE плагин и вызвать шорткод на странице ThankYou https://wordpress.org/plugins/woocommerce-coupon-shortcodes/

<?php echo do_shortcode('[coupon_shortcode]'); ?> 
+0

Извините, Raj Kumar Bhardwaj, ваш код работает только тогда, когда купон применяется к тележке. Когда вы переходите к оформлению заказа, он ничего не показывает. У вас есть решение? – user6561526

+0

Вы пробовали метод shortcode с плагином? –

+0

Да, но ничего не показывает. Мне нужно показать купон, используемый на странице заказа. (My-account/order). Не могли бы вы мне помочь? Мой код показывает только имя купона, но оно не показывает описание. Однако ваш код работает на странице корзины (перед оформлением заказа) – user6561526

0

вы можете получить, как этот

if($order->get_used_coupons()) { 

     $coupons_count = count($order->get_used_coupons()); 

     echo '<h4>' . __('Coupons used') . ' (' . $coupons_count . ')</h4>'; 

     echo '<p><strong>' . __('Coupons used') . ':</strong> '; 

     $i = 1; 
     $coupons_list = ''; 

     foreach($order->get_used_coupons() as $coupon) { 
      $coupons_list .= $coupon; 
      if($i < $coupons_count) 
       $coupons_list .= ', '; 
      $i++; 
     } 

     echo '<p><strong>Coupons used (' . $coupons_count . ') :</strong> ' . $coupons_list . '</p>'; }