如果购物车有来自特定类别的产品,我会尝试自动添加优惠券代码。显示折扣金额后,必须在总计中更新价格。
但我看不到总数有任何变化,请帮助我。
我的代码:
add_action('wc_cart_product_subtotal' , 'getsubtotalc');
function getsubtotalc ($product_subtotal, $_product, $quantity, $object) {
if( is_cart() || is_checkout() ) {
global $woocommerce, $product;
global $total_qty;
/*$coupon_code = 'drawer';
if ( $woocommerce->cart->has_discount( $coupon_code ) ) return;*/
foreach ( $woocommerce->cart->cart_contents as $product ) {
if( has_term( array('t-shirts-d','socks-d','joggers-d','boxers-d'), 'product_cat', $cart_item['product_id'] ) ){
$coupon_code = 'drawer';
if (!$woocommerce->cart->add_discount( sanitize_text_field( $coupon_code))) {
$woocommerce->show_messages();
}
echo '<div class="woocommerce_message"><strong>The number of Product in your order is greater than 10 so a 10% Discount has been Applied!</strong>
</div>';
} …
Run Code Online (Sandbox Code Playgroud) 我正在尝试生成可用优惠券列表并使用短代码显示它们。我希望使用 SQL 而不是“”生成列表,-1
因为据我了解,这对数据库来说更重。
我得到的错误是这样的:Notice: Array to string conversion
add_shortcode('ac', 'coupon_list' );
function coupon_list() {
// array for coupons, was hoping for a sql query instead but don't know how
$args = array(
'posts_per_page' => -1,
'orderby' => 'title',
'order' => 'asc',
'post_type' => 'shop_coupon',
'post_status' => 'publish',
);
$coupons = get_posts( $args );
$coupon_names = array();
foreach ( $coupons as $coupon ) {
$coupon_name = $coupon->post_title;
array_push( $coupon_names, $coupon_name );
}
// display all available coupons on …
Run Code Online (Sandbox Code Playgroud) 我正在尝试开发一个涉及使用优惠券的Magento插件.显然,在环顾四周之后,我发现我找到了一个来源,提到使用'salesrule'表作为优惠券.但是,当我查看我的数据库时,我找不到它.但是我确实找到了3张提到"优惠券"的表格,名为"coupon_aggregated","coupon_aggregated_order"和"coupon_aggregated_updated".
我只是想知道3个表之间有什么区别所以我可以开始使用它们了吗?我正在使用最新版本的Magento.
提前谢谢你们.
Woocommerce 结帐标题下方有一个链接,上面写着“单击此处输入您的代码”。当您单击它时,JavaScript 会向下滑动帐单详细信息框以显示优惠券代码框和“应用优惠券”按钮。
我试图在页面加载时自动显示此内容。
另一个选项是将 JavaScript 从单击操作更改为页面加载操作。
我正在使用stripe gem for rails,我正在尝试检查用户的优惠券代码是否无效.如果代码无效,则将用户重定向到users/show.html.haml
这是我的代码
if Stripe::Coupon.retrieve(current_user.coupon_code) == nil
redirect_to user_path(current_user)
end
Run Code Online (Sandbox Code Playgroud)
我认为从Stripe检索代码并检查值是否nil
可行但我收到的错误消息是:
Stripe::InvalidRequestError in SubscribersController#new
No such coupon: *Whatever the invalid coupon name is (ex. "ASDF")*
Run Code Online (Sandbox Code Playgroud)
想知道这里发生了什么?我查看了Ruby的Stripe文档,但没有看到有关如何检查代码是否无效的任何信息.还有另一种检查代码是否相等的方法nil
吗?
我正在尝试在客户的 WooCommerce 网站上设置优惠券,以便在总购物车低于上限金额或固定金额等于或大于上限金额时应用百分比折扣。
假设购物车总数的上限为 200。如果购物车总数低于此上限,则应用 10% 的折扣。但如果购物车总数为 200 件或更多,则固定金额 20 件将用作折扣。
例如:
如何将我的 WooCommerce 设置为根据总额应用百分比折扣或固定购物车?
我开始从事小型 Woocommerce 项目。我有 3 个进入这家商店的支付网关:Paypal、信用卡和直接银行转账。
我想要的是:如果使用优惠券代码,我想从可用的支付网关中禁用(或删除)Paypal 和信用卡,并保留“直接银行转账”作为可用的支付网关选择。
从结帐页面显示当前状态的外观:
我找到了一个类似的解决方案,但这是用于根据产品类别删除网关。
add_filter( 'woocommerce_available_payment_gateways', 'unset_payment_gateways_by_category' );
function unset_payment_gateways_by_category( $available_gateways ) {
global $woocommerce;
$unset = false;
$category_ids = array( 8, 37 );
foreach ( $woocommerce->cart->cart_contents as $key => $values ) {
$terms = get_the_terms( $values['product_id'], 'product_cat' );
foreach ( $terms as $term ) {
if ( in_array( $term->term_id, $category_ids ) ) {
$unset = true;
break;
}
}
}
if ( $unset == true )
unset( $available_gateways['cheque'] );
return $available_gateways;
}
Run Code Online (Sandbox Code Playgroud)
所以我认为可以使用此功能,但根据我的问题稍作修改。
任何帮助表示赞赏。
我注意到在“查看订单详细信息”和“电子邮件确认”中,它反映了折扣行,但没有说明所使用的实际折扣代码。此外,如果折扣代码为0.00美元(出于特殊跟踪目的,有时有时会有0美元的代码),则根本不会显示该代码。我整天都在努力寻找解决方案-有人可以为此提供一些指导吗?谢谢。
到目前为止,我已经进行了这项工作,以获取实际的优惠券代码:
add_action( 'woocommerce_order_details_after_order_table', 'custom_woocommerce_coupon_line' );
function custom_woocommerce_coupon_line( $order_id ) {
$order = wc_get_order( $order_id );
// An order can have no used coupons or also many used coupons
$coupons = $order->get_used_coupons();
$coupons = count($coupons) > 0 ? implode(',', $coupons) : '';
echo $coupons;
}
Run Code Online (Sandbox Code Playgroud)
但是无法弄清楚如何使它进入“折扣”行...也不为什么当折扣行是使用$ 0代码的$ 0项目时甚至没有出现。
在阅读完woocommerce_add_$NOTICE_TYPE
钩子后,我不确定我是否正确地做到了这一点。我想要做的是将Coupon code applied successfully
消息更改为我自己的自定义文本,如下所示:
The %coupon_name% promotion code has been applied and redeemed successfully.
Run Code Online (Sandbox Code Playgroud)
但我不知道如何获得优惠券名称。
add_filter( 'woocommerce_add_notice', function( $message ){
// get the coupon name here
if( $message == 'Coupon code applied successfully.' )
$message = 'The %coupon_name% promotion code has been applied and redeemed successfully.';
return $message;
});
Run Code Online (Sandbox Code Playgroud) woocommerce_applied_coupon
当通过挂钩和add_to_cart()
功能使用特定优惠券时,我可以将产品添加到购物车
add_action('woocommerce_applied_coupon', 'apply_product_on_coupon');
function apply_product_on_coupon( ) {
global $woocommerce;
$coupon_id = 'mybday';
$free_product_id = 131468;
if(in_array($coupon_id, $woocommerce->cart->get_applied_coupons())){
$woocommerce->cart->add_to_cart($free_product_id, 1);
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:有没有办法在同一个回调函数中将其折扣为 0?
coupon ×10
woocommerce ×8
wordpress ×7
php ×6
cart ×2
categories ×1
magento ×1
magento-1.7 ×1
orders ×1
product ×1
ruby ×1
shortcode ×1