优惠券显示哪些内容适用于Wordpress中的特定产品

时间:2019-07-08 08:57:34

标签: wordpress woocommerce hook-woocommerce custom-wordpress-pages dokan

我尝试为单个产品页面上显示的客户显示优惠券,我将woocommerce和dokan一起使用。

我已经尝试过一个代码,但是我不知道它没有显示由供应商添加的新优惠券,还显示了每种产品上的每个优惠券,许多优惠券仅用于特定产品,仍然在每种产品上显示。

这是我在function.php中添加的代码

   function display_coupon( $store_user ) 
   {
    $seller_coupons = dokan_get_seller_coupon( $store_user->ID, true );

 // var_dump( $seller_coupons );
  if ( ! $seller_coupons ) {
    return;
}
// WC 3.0 compatibility
if ( class_exists( 'WC_DateTime' ) ) {
    $current_time = new WC_DateTime();
    $current_time = $current_time->getTimestamp();
} else {
    $current_time = current_time( 'timestamp' );
}
echo '<hr>';
echo '<h3 class="widget-title">Coupons Available</h3>';
echo '<div class="store-coupon-wrap">';

foreach ( $seller_coupons as $coupon ) {
    $coup = new WC_Coupon( $coupon->ID );

    $expiry_date = dokan_get_prop( $coup, 'expiry_date', 'get_date_expires' );
    $coup_exists = dokan_get_prop( $coup, 'exists', 'is_valid' );

    if ( class_exists( 'WC_DateTime' ) && $expiry_date ) {
    $expiry_date = new WC_DateTime( $expiry_date );
    $expiry_date = $expiry_date->getTimestamp();
    }

    if ( $expiry_date && ( $current_time > $expiry_date ) ) {
    continue;
    }

    $coupon_type = version_compare( WC_VERSION, '2.7', '>' ) ? 'percent' : 'percent_product';

    if ( $coupon_type == dokan_get_prop( $coup, 'type', 'get_discount_type' ) ) {
    $coupon_amount_formated = dokan_get_prop( $coup, 'amount' ) . '%';
    } else {
    $coupon_amount_formated = wc_price( dokan_get_prop( $coup, 'amount' ) );
    }
    ?>
    <div class="code">
     <span class="outside">
      <br>
      <span class="inside">
          <div class="coupon-title"><?php printf( __( 'Get %s Discount By Using:', 'dokan' ), $coupon_amount_formated ); ?>          </div>
          <div class="coupon-body">
             <?php if ( !empty( $coupon->post_content ) ) { ?>
             <span class="coupon-details"><?php echo esc_html( $coupon->post_content ); ?></span>
             <?php } ?>
             <span class="coupon-code"><?php printf( __( 'Coupon Code: <strong>%s</strong>', 'dokan' ), $coupon->post_title ); ?></span>

             <?php if ( $expiry_date ) {
               $expiry_date = is_object( $expiry_date ) ? $expiry_date->getTimestamp() : $expiry_date; ?>
               <span class="expiring-in">(<?php printf( __( 'Expiring in %s', 'dokan' ), human_time_diff( $current_time, $expiry_date ) ); ?>)</span>
             <?php } ?>
       </div>
      </span>
     </span>
    </div>
    <?php
 }
 echo '</div>';
}
 if (class_exists('Dokan_Pro_Store')) {
  $dokan = Dokan_Pro_Store::init();
  remove_action( 'dokan_store_profile_frame_after', [$dokan, 'show_store_coupons'], 10);
 }
 add_action('woocommerce_after_single_product_summary','display_coupon');

当我添加代码时,我有5张优惠券用于测试,它显示了,但是当我添加了5张以上优惠券但没有显示任何东西之后。 它只会显示适用于特定骄傲的优惠券,例如:两个可用于骄傲的优惠券,而不是同时显示两个优惠券,但是product2仅适用于1个优惠券,而不是仅显示1个优惠券。

0 个答案:

没有答案