我有一个Woocommerce网站,当客户添加到购物车产品时,它会被重定向到结帐页面,因此无法访问购物车页面.
我想在结帐页面上通过URL(GET)申请优惠券,例如:
GET
.
当客户点击此网址时,优惠券代码将存储在浏览器会话中.然后,如果他将任何产品添加到购物车,则优惠券将应用于结帐页面.
这可能吗?
任何帮助将不胜感激.
我已在客户的 WordPress 网站中实施了批发用户角色。最终目标是让批发用户对所有产品享受 40% 的折扣,但如果他们消费 500.00 美元或更多,则可以在购物车总购买量中获得额外 7% 的折扣。我设置了动态定价的初始 40% 折扣,对于额外的 7%,我创建了一张优惠券,自动应用于购物车,而无需用户输入优惠券代码。
唯一的问题是优惠券适用于所有用户(客户、管理员和经销商),并且不针对特定角色。谁能告诉我如何更改我的优惠券代码以仅适用于“经销商”的用户角色?如果您需要查看实时站点,可以在这里查看!谢谢你!
add_action( 'woocommerce_before_cart', 'apply_matched_coupons' );
function apply_matched_coupons() {
global $woocommerce;
$coupon_code = 'additionaldiscount'; // coupon code
if ( $woocommerce->cart->has_discount( $coupon_code ) ) return;
if ( $woocommerce->cart->cart_contents_total >= 500 ) {
$woocommerce->cart->add_discount( $coupon_code );
$woocommerce->show_messages();
}
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试检查优惠券是否仍然有效(尚未达到其使用限制)并在此条件下显示内容。
这样做的原因是我希望能够向特定访问者分发优惠券代码,但显然不想分发已经达到使用限制的优惠券。
我试图用 PHP 来实现这一点,并想象代码是这样的:
<?php if (coupon('mycouponcode') isvalid) {
echo "Coupon Valid"
} else {
echo "Coupon Usage Limit Reached"
} ?>
Run Code Online (Sandbox Code Playgroud)
这里的任何帮助都会很棒:)
如何隐藏产品页面下拉列表中的变体,但仍允许通过 WooCommerce URL 优惠券购买?
如果我将变体设置为不活动,则它会从下拉列表中隐藏,但我会在购物车中收到消息“无法购买此产品”。我只是想将其从列表中隐藏,而不是完全禁用它。
我访问了官方 WooCommerce Rest API 文档“创建订单”部分。我正在尝试通过 API 创建订单,但是当我想使用应用优惠券创建订单时,我不知道如何制作。
当我通过 REST API 创建订单时,如何传递优惠券代码作为折扣?
在相关的官方文档中我没有找到任何请求参数来传递优惠券代码或折扣。
请建议在 WooCommerce 中通过 REST API 创建订单时如何传递优惠券代码。
我以前问过这个问题,但是它没有回答如何从 WooCommerce 中的优惠券中检索数据的问题。两个问题都涉及优惠券,但是,第一个问题是询问如何设置元数据,而这个问题询问您如何检索数据。
我试图通过优惠券代码从 WooCommerce 获取优惠券的详细信息。但是,我不确定我应该如何尝试这样做。
我试过下面的代码。但是,它给了我错误Call to undefined function WC_Coupon()
$coupon_code = 'save10percent';
global $woocommerce;
$c = WC_Coupon($coupon_code);
Run Code Online (Sandbox Code Playgroud)
应该如何获取优惠券的详细信息?
我正在开发一个直接创建订单(无购物车)并应用优惠券的插件。在 woo API 的 3.0 版中,该函数add_coupon()
已被弃用,取而代之的是WC_Order_Item_Coupon
您添加到订单中的对象。
创建优惠券
$coupon = new WC_Order_Item_Coupon();
$coupon->set_props(array('code' => $coupon, 'discount' => $discount_total,
'discount_tax' => 0));
$coupon->save();
Run Code Online (Sandbox Code Playgroud)
这是成功的。我可以通过调用来验证$coupon->get_discount()
。
然后我将优惠券添加到订单并重新计算总数:
$order->add_item($item);
$order->calculate_totals($discount_total);
$order->save();
Run Code Online (Sandbox Code Playgroud)
登录 wp-admin 我可以看到带有优惠券代码的订单。但是,优惠券对行项目或总计没有影响。
是否误解了 api v3.0 打算如何处理优惠券?
目前在结账页面和购物车页面,在人们应用优惠券代码后,购物车显示优惠券名称以及从原始产品价格减少了多少钱。
例如,产品价格为 100,优惠券折扣为 20%,然后显示优惠券名称 -20 。
但我不想在那里显示 -20 ,而是需要在那里显示自定义字符串,例如 20% off 。不是数量,而是一些自定义字符串..
我怎么能做到这一点?. 当我搜索时,我可以找到该主题/woocommerce/cart/cart.php 那里正在使用一个函数 <?php do_action( 'woocommerce_cart_collaterals' ); ?>
。所以没有选项可以编辑减少的金额。
所以请帮忙,请注意此字符串需要显示在结帐、购物车、订单电子邮件等中。
我正在尝试在 WooCommerce 订单电子邮件上显示使用过的优惠券 + 添加描述。
显示优惠券的工作原理是: 在管理新订单电子邮件模板中添加应用的优惠券代码 - WooCommerce
我也尝试过这个:
$coupons = $order->get_items( 'coupon' );
foreach ( $coupons as $item_id => $item ) {
echo "<span class='coupon-name'><b>".$item['name']."</b></span>";
$post = get_post( $item_id );
echo "<p class='coupon-description'>".$post->post_excerpt."</p>";
}
}
Run Code Online (Sandbox Code Playgroud)
但不起作用...有什么想法吗?
我正在使用 woocommerce,我想不仅通过默认的内置到期日期检查来验证优惠券,还想验证到期时间。
我为优惠券添加了一个自定义字段,允许设置到期时间。
我编写了以下代码片段以覆盖validate_coupon_expiry_date
类 WC_Discounts 中的默认方法:
class WC_My_plugin_Discounts extends WC_Discounts
{
// override validate_coupon_expiry_date to include expiry time:
protected function validate_coupon_expiry_date($coupon)
{
$expiry_date = date('Y-m-d', $coupon->get_date_expires()->getTimestamp());
// I add a custom field `expiry_time` in postmeta table:
$expiry_time = $coupon->get_meta('expiry_time');
$dateTime = new DateTime($expiry_date . $expiry_time);
if ($coupon->get_date_expires() && apply_filters('woocommerce_coupon_validate_expiry_date', time() > $dateTime, $coupon, $this)) {
throw new Exception(__('This coupon has expired.', 'woocommerce'), 107);
}
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
然后,我尝试使用以下代码段验证优惠券:
add_filter('woocommerce_coupon_is_valid', array($this, 'validate_coupon'), 15, 2);
function validate_coupon($valid, $coupon)
{ …
Run Code Online (Sandbox Code Playgroud)