在WooCommerce上强制优惠券字段

时间:2014-12-17 13:27:34

标签: wordpress wordpress-plugin woocommerce coupon

我想知道是否可以在Woocommerce上强制使用优惠券字段。

我知道这可以使用函数,但是这略高于我目前的技能水平所以我想知道你是否可以给我一个如何实现这个目标的笨拙/逐步版本。任何答案都会非常感激。

或者是否有一个插件可以帮助我实现这个目标?

3 个答案:

答案 0 :(得分:1)

我不知道该功能,但您可以通过以下方式修改插件来实现此目的:

在主题文件夹 woocommerce 中创建一个文件夹,在新创建的woocommerce文件夹中,使用结帐名称创建另一个文件夹。

所以现在它看起来像 wp-content>主题>你的主题> woocommerce>结帐

现在转到您的插件目录并按照以下路径:

wp-content > plugins > woocommerce > templates > checkout

当你进入上面的路径时,你会发现一个名为form-coupon.php的文件。复制该文件并将其粘贴到我们在该答案顶部创建的目录。

wp-content > themes > your-theme > woocommerce > checkout > form-coupon.php

现在是时候修改 wp-content>中的代码了主题>你的主题> woocommerce>结帐> form-coupon.php

在上述文件中查找以下代码行:

<input type="text" name="coupon_code" class="input-text" placeholder="<?php _e( 'Coupon code', 'woocommerce' ); ?>" id="coupon_code" value="" />

替换上面的行
<input type="text" name="coupon_code" class="input-text" placeholder="<?php _e( 'Coupon code', 'woocommerce' ); ?>" id="coupon_code" value="" required/>

注意:此处我添加了required的{​​{1}}属性。

如果您有任何疑问,请告诉我。

<强>更新:

html

请尝试一下,让我知道反馈。

注意 add_action('woocommerce_check_cart_items', 'make_coupon_code'); function make_coupon_code() { global $woocommerce; if(is_cart() || is_checkout()){ $my_coupon = $woocommerce->cart->applied_coupons; echo $woocommerce->cart->get_applied_coupons; if(empty($my_coupon)) { $woocommerce->add_error("Please enter coupon code to checkout."); } } }

答案 1 :(得分:0)

解决问题尝试此代码:

    <?php
 add_action('woocommerce_check_cart_items', 'make_coupon_code');

    function make_coupon_code()
    {
        global $woocommerce;
        if(is_cart() || is_checkout()){
            $my_coupon = $woocommerce->cart->applied_coupons;
            echo $woocommerce->cart->get_applied_coupons;
            if(empty($my_coupon))
            {
                wc_add_notice( '<strong>' . $btn['label'] . '</strong> ' . __( 'insert coupon code', 'woocommerce' ), 'error' );
            }
        }
    }
?>
在functions.php而不是上面的那个

对我来说它有效

答案 2 :(得分:0)

在functions.php中添加以下代码

单个产品需要优惠券

add_action( 'woocommerce_check_cart_items', 'mandatory_coupon_for_specific_items' );
function mandatory_coupon_for_specific_items() {
  $targeted_ids = array(37); // The targeted product ids (in this array)
  $coupon_code = 'summer2'; // The required coupon code
  $coupon_applied = in_array( strtolower($coupon_code), WC()->cart->get_applied_coupons() );

  // Loop through cart items
  foreach(WC()->cart->get_cart() as $cart_item ) {
    // Check cart item for defined product Ids and applied coupon
    if( in_array( $cart_item['product_id'], $targeted_ids ) && ! $coupon_applied ) {
      wc_clear_notices(); // Clear all other notices
      // Avoid checkout displaying an error notice
      wc_add_notice( sprintf( 'The product"%s" requires a coupon for checkout.', 
      $cart_item['data']->get_name() ), 'error' );
      break; // stop the loop
    }
  }
}

$targeted_ids = array(37);中的产品ID替换37​​,您可以有多个产品ID,例如$targeted_ids = array(37,48,12);

$coupon_code = 'summer2';中的任何其他优惠券代码替换“ summer2” 使用前,请不要忘记在WooCommerce中添加此优惠券代码。


需要所有产品的优惠券

add_action( 'woocommerce_check_cart_items', 'mandatory_coupon_code' );
function mandatory_coupon_code() {
  $product_categories = array( 'clothing' ); // Category ID or slug of targeted category
  $coupon_code = 'summer2'; // The required coupon code
  $coupon_applied = in_array( strtolower($coupon_code), WC()->cart->get_applied_coupons() );
  // Loop through cart items
  foreach ( WC()->cart->get_cart() as $cart_item ){
    if( has_term( $product_categories, 'product_cat', $cart_item['product_id'] ) && !$coupon_applied ) {
      wc_clear_notices(); // Clear all other notices
      // Avoid checkout displaying an error notice
      wc_add_notice( sprintf( 'The product"%s" requires a coupon for checkout.', 
      $cart_item['data']->get_name() ), 'error' );
      break; // stop the loop
    }
  }
}

用任何其他类别名称或类别ID替换$product_categories = array( 'clothing' );