在thankyou.php上显示优惠券描述和ID

时间:2016-07-07 15:38:43

标签: wordpress woocommerce coupon

基本上,我想显示Woocommerce 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>

有人可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:1)

add_filter('woocommerce_get_order_item_totals','change_discount',10,3);
function change_discount($total_rows, $order, $tax_display){ 
    if (  $order->get_total_discount() > 0 ) { 
        $coupons = $order->get_used_coupons(); 
        $total_rows['discount'] = array( 'label' => __( 'Coupon code: '.implode(",",$coupons), 'woocommerce' ), 'value' => '-' . $order->get_discount_to_display( $tax_display ), ); 
    } 
return $total_rows; 
}

答案 1 :(得分:0)

请使用此代码,我希望它能为您效劳:

<?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>";
                        }
                }
            }
        }
    }
?>

如果这不起作用,请使用优惠券短代码插件并在thankyou页面上调用短代码       https://wordpress.org/plugins/woocommerce-coupon-shortcodes/

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

答案 2 :(得分: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>';   }