Wordpress PHP查询正在提取错误的数据库条目

时间:2015-12-02 04:36:57

标签: php mysql wordpress

这里的第一个问题!

我有一个自定义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的条目。有什么建议或意见吗?谢谢

1 个答案:

答案 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'