gpt4 book ai didi

php - 将 "added to cart"通知替换为 WooCommerce 上的 JS Sweet Alert

转载 作者:行者123 更新时间:2023-12-01 01:21:22 24 4
gpt4 key购买 nike

我删除了 WooCommerce 给出的标准“已添加到购物车”消息。然后我添加了下面使用 Sweet Alert 的代码。这个想法是删除所有“添加到购物车”消息并仅使用甜蜜警报。

基于@LoicTheAztec的"JS alert on ajax add to cart for specific product category count in Woocommerce "答案代码,我的代码适用于添加的第一个产品,但不适用于以下产品。所以它工作得很好当购物车为空时以及添加第一个产品时。

这是我正在使用的代码:

// remove add to cart woocommerce message
add_filter('wc_add_to_cart_message_html', '__return_null');

// Wordpress Ajax PHP
add_action('wp_ajax_nopriv_checking_items', 'atc_sweet_message');
add_action('wp_ajax_checking_items', 'atc_sweet_message');

function atc_sweet_message() {
if (isset($_POST['id']) && $_POST['id'] > 0) {
$count = 0;
$product_id = $_POST['id'];
foreach(WC()-> cart-> get_cart() as $cart_item) {
$count += $cart_item['quantity'];
}
}
echo $count;
die();
}

// jQuery Ajax
add_action('wp_footer', 'item_count_check');
function item_count_check() {
if (is_checkout())
return;
?>
<script src="https://unpkg.com/sweetalert2@7.20.1/dist/sweetalert2.all.js"></script>
<script type="text/javascript">
jQuery( function($) {
if ( typeof wc_add_to_cart_params === 'undefined' )
return false;

$(document.body).on( 'added_to_cart', function( event, fragments, cart_hash, $button ) {
$.ajax({
type: 'POST',
url: wc_add_to_cart_params.ajax_url,
data: {
'action': 'checking_items',
'id' : $button.data( 'product_id' )
},
success: function (response) {
if(response == 1 ){
const toast = swal.mixin({
toast: true,
showConfirmButton: false,
timer: 3000
});
toast({
type: 'success',
title: 'Product Added To Cart'
})
}
}
});
});
});
</script>
<?php
}

我尝试删除 if(response == 1 ){ 但没有成功。对此的任何意见都将受到赞赏。

最佳答案

您的 Wordpress Ajax PHP 函数代码中几乎没有错误。请尝试以下操作:

// remove add to cart woocommerce message
add_filter('wc_add_to_cart_message_html', '__return_null');

// Wordpress Ajax PHP
add_action('wp_ajax_nopriv_item_added', 'addedtocart_sweet_message');
add_action('wp_ajax_item_added', 'addedtocart_sweet_message');
function addedtocart_sweet_message() {
echo isset($_POST['id']) && $_POST['id'] > 0 ? (int) esc_attr($_POST['id']) : false;
die();
}

// jQuery Ajax
add_action('wp_footer', 'item_count_check');
function item_count_check() {
if (is_checkout())
return;
?>
<script src="https://unpkg.com/sweetalert2@7.20.1/dist/sweetalert2.all.js"></script>
<script type="text/javascript">
jQuery( function($) {
if ( typeof wc_add_to_cart_params === 'undefined' )
return false;

$(document.body).on( 'added_to_cart', function( event, fragments, cart_hash, $button ) {
var $pid = $button.data('product_id');

$.ajax({
type: 'POST',
url: wc_add_to_cart_params.ajax_url,
data: {
'action': 'item_added',
'id' : $pid
},
success: function (response) {
if(response == $pid){
const toast = swal.mixin({
toast: true,
showConfirmButton: false,
timer: 3000
});
toast({
type: 'success',
title: 'Product Added To Cart'
})
}
}
});
});
});
</script>
<?php
}

代码位于事件子主题(或事件主题)的 function.php 文件中。经过测试并有效。

它现在适用于添加到购物车项目的所有 ajax (而不仅仅是第一个)

enter image description here

关于php - 将 "added to cart"通知替换为 WooCommerce 上的 JS Sweet Alert,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54886166/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com