Купон показывает, что доступно для конкретных продуктов в WordPress - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь показать купон для клиентов, которые доступны на странице одного продукта, я использую 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 купонов, но он ничего не показывает. это будет только купон, который предназначен для конкретного гордости, как: два купона, доступных для гордости1, чем его показы обоих, но продукт2 имеет право только на 1 купон, чем его показы только этого 1 купона.

...