我尝试为单个产品页面上显示的客户显示优惠券,我将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个优惠券。