我想知道是否可以在 WooCommerce 上强制使用优惠券字段。
我知道使用函数可以做到这一点,但是这略高于我目前的技能水平,所以我想知道你是否可以给我一个如何完成这个的分步版本。任何答案将不胜感激。
我想知道是否可以在 WooCommerce 上强制使用优惠券字段。
我知道使用函数可以做到这一点,但是这略高于我目前的技能水平,所以我想知道你是否可以给我一个如何完成这个的分步版本。任何答案将不胜感激。
我不知道该功能,但您可以通过以下方式修改插件以实现此目的:
在您的主题文件夹woocommerce和新创建的 woocommerce 文件夹中创建一个文件夹,使用结帐名称创建另一个文件夹。
所以现在它看起来像wp-content > Themes > your-theme > woocommerce > checkout。
现在转到您的插件目录并按照以下路径:
wp-content > plugins > woocommerce > templates > checkout
当您进入上述路径时,您会发现一个名为form-coupon.php
. 复制该文件并将其粘贴到我们在该答案顶部创建的目录中。
wp-content > themes > your-theme > woocommerce > checkout > form-coupon.php
.
现在是时候修改wp-content > Themes > your-theme > woocommerce > checkout > 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
了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.");
}
}
}
请试一试,让我知道反馈。
注意:UNTESTED
要解决问题,请尝试以下代码:
<?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而不是上面的那个...
对我来说它有效
在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
}
}
}
将 37 替换为您的产品 ID,$targeted_ids = array(37);
您可以拥有多个产品 ID,例如$targeted_ids = array(37,48,12);
用任何其他优惠券代码替换“summer2”,$coupon_code = '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
}
}
}
替换$product_categories = array( 'clothing' );
为任何其他类别名称或类别 ID。