Php 替换“;“添加到购物车中”;关于WooCommerce的JS Sweet Alert通知

Php 替换“;“添加到购物车中”;关于WooCommerce的JS Sweet Alert通知,php,jquery,ajax,wordpress,woocommerce,Php,Jquery,Ajax,Wordpress,Woocommerce,我已经删除了WooCommerce提供的标准“添加到购物车”消息。然后我在下面添加了使用Sweet警报的代码。我们的想法是删除所有“添加到购物车”的消息,并且只使用sweet警报 根据@LoicTheAztec提供的“”应答代码,我的代码适用于添加的第一个产品,但不适用于以下产品。因此,当购物车为空以及添加第一个产品时,它可以正常工作 以下是我使用的代码: // remove add to cart woocommerce message add_filter('wc_add_to_cart_m

我已经删除了WooCommerce提供的标准“添加到购物车”消息。然后我在下面添加了使用Sweet警报的代码。我们的想法是删除所有“添加到购物车”的消息,并且只使用sweet警报

根据@LoicTheAztec提供的“”应答代码,我的代码适用于添加的第一个产品,但不适用于以下产品。因此,当购物车为空以及添加第一个产品时,它可以正常工作

以下是我使用的代码:

// 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
}
//删除“添加到购物车”消息
添加过滤器('wc\u add\u to\u cart\u message\u html','uuu return\u null');
//Wordpress Ajax PHP
添加动作(“wp\u ajax\u nopriv\u checking\u items”、“atc\u sweet\u message”);
添加动作(“wp\U ajax\U检查项目”、“atc\U甜蜜消息”);
功能atc_甜_消息(){
如果(isset($\u POST['id'])&&$\u POST['id']>0){
$count=0;
$product_id=$_POST['id'];
foreach(WC()->cart->get_cart()作为$cart_项目){
$count+=$cart_项目['quantity'];
}
}
echo$count;
模具();
}
//jQuery Ajax
添加操作(“工作包页脚”、“项目计数检查”);
功能项\u计数\u检查(){
if(is_checkout())
返回;
?> 
jQuery(函数($){
如果(wc类型添加到购物车参数==='undefined')
返回false;
$(document.body).on('added_to_cart',函数(事件,片段,cart_hash,$按钮){
$.ajax({
键入:“POST”,
url:wc_add_to_cart_params.ajax_url,
数据:{
“操作”:“检查项目”,
'id':$button.data('product_id')
},
成功:功能(响应){
如果(响应==1){
const toast=swal.mixin({
吐司:是的,
showconfixton:false,
计时器:3000
});
吐司({
键入:“成功”,
标题:“产品已添加到购物车”
})
}
}
});
});
});

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
}
//删除“添加到购物车”消息
添加过滤器('wc\u add\u to\u cart\u message\u html','uuu return\u null');
//Wordpress Ajax PHP
添加动作(“添加了wp\u ajax\u nopriv\u项目”、“添加了声音消息”);
添加动作(“添加了wp\U ajax\U项”、“添加了视频消息”);
函数addedtocart\u sweet\u消息(){
echo-isset($_-POST['id'])和&$_-POST['id']>0?(int)esc_-attr($_-POST['id']):false;
模具();
}
//jQuery Ajax
添加操作(“工作包页脚”、“项目计数检查”);
功能项\u计数\u检查(){
if(is_checkout())
返回;
?>
jQuery(函数($){
如果(wc类型添加到购物车参数==='undefined')
返回false;
$(document.body).on('added_to_cart',函数(事件,片段,cart_hash,$按钮){
var$pid=$button.data('product_id');
$.ajax({
键入:“POST”,
url:wc_add_to_cart_params.ajax_url,
数据:{
“操作”:“添加项目”,
'id':$pid
},
成功:功能(响应){
如果(响应==$pid){
const toast=swal.mixin({
吐司:是的,
showconfixton:false,
计时器:3000
});
吐司({
键入:“成功”,
标题:“产品已添加到购物车”
})
}
}
});
});
});

@LoicTheAztec,你介意看看这个吗,因为你帮我回答了另一个问题?谢谢!只有一个“问题”,如果可以称为“问题”,页面“重新加载”和“闪烁”将产品添加到购物车时,如果在“产品”页面上,则不会显示该消息。除此之外,该消息工作正常。@FreddieMcCollough该代码用于使用“Ajax添加到购物车按钮”所以它不能在单个产品页面上工作…当产品添加到购物车时,页面会重新加载,并且没有
added_to_cart
jQuery事件处于活动状态,因为这只是PHP。好的,我理解。我试着为
add_过滤器添加一个if语句(“wc_add_to_cart_message_html”,“uu return_null”)
filter使其仅在商店(if!is_产品)上运行,但这不起作用。@FreddieMcCollough但请记住,在产品单页中有相关产品和upsells产品,它们可以使用ajax添加到购物车按钮(如果是简单的产品)。