这里的第一个问题!
我有一个自定义wordpress网站,其中我有一个包含折扣/优惠券代码的结账功能。
我已完成以下测试代码: - 我在我的数据库中设置了三个优惠券代码 - 所有三个优惠券代码都在数据库中,并附有正确的信息
当我尝试输入优惠券时,代码仅应用输入的最后一张优惠券的优惠券规则。它应该通过拉出与$couponcode
我知道我分配$couponID
的方式有问题,但我无法弄清楚如何正确地做到这一点。
注意:我知道错误拼写:cooupon_title
。但是它在数据库中以这种方式设置,因此不是错误。
<?php
$couponCode = '';
$couponMessage = '';
$discountAmount = 0;
$couponId = 0;
if(isset($_POST['couponCode']) && !empty($_POST['couponCode'])) {
$couponCode = $_POST['couponCode']; }
if(!empty($couponCode)) {
$args = array('posts_per_page' => 1,'offset' => 0,'category' => '', 'category_name' => '', 'orderby' => 'date','order' => 'DESC','include' => '', 'exclude' => '','meta_key' => '','meta_value' => '','post_type' => 'coupons','post_mime_type' => '','title' => $couponCode,'post_status' => 'publish','suppress_filters' => 'true');
$couponDbData = get_posts($args);
$couponResultData = '';
if(isset($couponDbData[0]) && !empty($couponDbData[0])) {
$couponResultData = $couponDbData[0];
} else {
$couponMessage = 'Invalid coupon code';
}
if(isset($couponResultData->ID) && !empty($couponResultData->ID))
$couponId = $couponResultData->ID;
if(!empty($couponId)) {
$expiry_condition = get_post_meta($couponId,'expiry_condition',true);
$expiry_value = get_post_meta($couponId,'expiry_value',true);
$no_of_use = get_post_meta($couponId,'no_of_use',true);
$appyCoupon = false;
if($expiry_condition=='use') {
if($expiry_value > $no_of_use) {
$appyCoupon = true;
} else {
$couponMessage = 'Coupon has expired.';
}
} else {
$couponExpireTime = strtotime($expiry_value);
$currentTime = time();
if($couponExpireTime > $currentTime) {
$appyCoupon = true;
} else {
$couponMessage = 'Coupon has expired.';
}
}
if($appyCoupon) {
$cooupon_title = get_post_meta($couponId,'cooupon_title',true);
$coupon_type = get_post_meta($couponId,'coupon_type',true);
$coupon_value = get_post_meta($couponId,'coupon_value',true);
if($coupon_type=='$') {
$discountAmount = $coupon_value;
} else {
$discountAmount = ($orderAmount*$coupon_value)/100;
}
$grandTotal -= $discountAmount;
}
}
}
这是我的测试输出:
if($appyCoupon) { ?>
<div class="col-sm-12 col-md-12 makeOrderDetailsrow">
<label class="col-sm-4 col-md-4">Discount <?php echo '( Apply coupon '.$couponCode.' from the following sources '.$couponId.' '.$cooupon_title.' '.$coupon_value.' '.$coupon_type.')'; ?></label>
<span class="col-sm-8 col-md-8">- $<?php echo (number_format($discountAmount,2)); ?></span>
</div>
来自以下来源&#34;之后的输出&#34;显示代码正在拉取数据库中的最后一个条目而不是匹配$couponCode
的条目。有什么建议或意见吗?谢谢
答案 0 :(得分:1)
根据codex,get_posts的参数不包括&#39; title&#39;,https://codex.wordpress.org/Template_Tags/get_posts。
Wordpress具有通过标题 count = 0
for x in sequence :
if x == item :
count = count+1
return count
http://codex.wordpress.org/Function_Reference/get_page_by_title
顺便说一下,您不必在get_posts查询中包含$ args的完整列表,只需要在默认情况下更改那些。例如,
get_page_by_title( $page_title, $output, $post_type );
将覆盖$args = array(
'post_type' => 'coupon',
);
的默认值,而不会更改'post_type' => 'post'
。