Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/243.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 将产品添加到单个产品的购物车后,触发JQuery单击_Php_Jquery_Wordpress_Woocommerce_Product - Fatal编程技术网

Php 将产品添加到单个产品的购物车后,触发JQuery单击

Php 将产品添加到单个产品的购物车后,触发JQuery单击,php,jquery,wordpress,woocommerce,product,Php,Jquery,Wordpress,Woocommerce,Product,我试图在woocommerce上使用mini-cart.php制作一个侧边栏,到目前为止我做得还不错,但我想在点击产品页面上的“添加到购物车”按钮后触发侧边栏 我找到了答案,并对代码进行了一些更改: add_action( 'wp_footer', 'trigger_for_ajax_add_to_cart' ); function trigger_for_ajax_add_to_cart() { ?> <script type="text/javascript

我试图在woocommerce上使用mini-cart.php制作一个侧边栏,到目前为止我做得还不错,但我想在点击产品页面上的“添加到购物车”按钮后触发侧边栏

我找到了答案,并对代码进行了一些更改:

add_action( 'wp_footer', 'trigger_for_ajax_add_to_cart' );
 function trigger_for_ajax_add_to_cart() {
 ?>
    <script type="text/javascript">
        (function($){
            $('body').on( 'click', '.single_add_to_cart_button', function(){
                $( ".open-side-cart" ).trigger( "click" );
            });
        })(jQuery);
    </script>
 <?php
}
add_操作('wp_footer','trigger_for_ajax'u add_to_cart');
函数触发器\u用于\u ajax\u将\u添加到\u购物车(){
?>
(函数($){
$('body')。在('click','single_add_to_cart_button',function()上{
$(“.open side cart”)。触发(“单击”);
});
})(jQuery);

由于您没有使用Ajax add-to-cart,当将产品添加到购物车时,页面会随着产品数据的发布而重新加载……然后您可以检查
$\u POST['add-to-cart']
以显示jQuery脚本的活动部分,一旦页面重新加载,如下所示:

add_操作('wp_footer','trigger_for_ajax'u add_to_cart');
函数触发器\u用于\u ajax\u将\u添加到\u购物车(){
如果(isset($\u POST['add-to-cart'])&&&$\u POST['add-to-cart']>0
&&isset($\u POST['quantity'])&&$\u POST['quantity']>0):
?>
(函数($){
$(“.open side cart”)。触发(“单击”);
//显示用于测试目的的警报(待删除)
警报(“.open side cart”Click!”);
})(jQuery);

谢谢@LoicTheAztec,我找到了解决办法

在我的例子中,我无法使用
$\u POST['add-to-cart']
触发jQuery

我的解决方案是使用另一种方法,每次将产品添加到购物车时,都会显示一条消息,并说“(产品名称)已添加到购物车”文本将显示在一个div中,其类为
。woocommerce message

使用此方法,每次出现此消息时,我都会创建一个触发器,单击类
。打开侧车
,侧车就会出现

守则:

add_action( 'wp_footer', 'trigger_for_ajax_add_to_cart' );

function trigger_for_ajax_add_to_cart() {
    //Only trigger if is single product page
    if ( is_product() )  {
    ?>
            <script type="text/javascript">
                (function($){
                        //If .woocommerce-message is visible
                        $(".woocommerce-message").each(function() {
                                if ($(this).css("visibility") == "visible") {

                                    //Trigger side cart .open-side-cart
                                    setTimeout(function(){
                                        $( ".open-side-cart" ).click();
                                    }, 500);

                                    //Nothing Happen
                                } else {
                                        return false;
                                }
                        });
                })(jQuery);
            </script>
    <?php
    }
}
add_操作('wp_footer','trigger_for_ajax'u add_to_cart');
函数触发器\u用于\u ajax\u将\u添加到\u购物车(){
//仅当是单个产品页时触发
if(is_product()){
?>
(函数($){
//如果.woocommerce消息可见
$(“.woocommerce message”)。每个(函数(){
if($(this.css(“可见性”)=“可见”){
//触发侧车。打开侧车
setTimeout(函数(){
$(“.open side cart”)。单击();
}, 500);
//什么也没发生
}否则{
返回false;
}
});
})(jQuery);

抱歉,Ajax添加到购物车不会重新加载任何页面,这就是为什么它使用Ajax来避免任何页面重新加载。因此,您似乎在单个产品页面上使用普通的添加到购物车按钮,然后在通过表单发布数据时重新加载页面。因此,您应该编辑您的问题,删除“Ajax”…谢谢你的回复,我将从我的问题中删除AJAX谢谢你的回复,经过多次尝试,它仍然不起作用。但我有一个想法。每当产品添加到购物车时,woocommerce会显示一条消息“你的产品已添加到购物车”这个消息用类
.woocommerce message
包装在一个div中,我尝试使用jQuery并做了类似的事情
$(“.woocommerce message”).each(函数(){if($(this).css(“可见性”)==“visible”){$(“.open side cart”)。click();}否则{//什么也不会发生;}
但仍然不起作用。你能告诉我为什么吗?我做错了什么?@iaLearningPHP我已经添加了一个用于测试的警报,当在单个产品页面上向购物车添加任何产品时,会显示警报,因此代码可以正常工作(请参阅我更新的代码)。如果这个答案回答了你的问题,你可以请你回答,如果你喜欢/想要,你也可以请你回答,谢谢。这很有效!在我的情况下,延迟是解决办法。非常感谢
        setTimeout(function(){
            $( ".open-side-cart" ).trigger( "click" );
        }, 500);
add_action( 'wp_footer', 'trigger_for_ajax_add_to_cart' );

function trigger_for_ajax_add_to_cart() {
    //Only trigger if is single product page
    if ( is_product() )  {
    ?>
            <script type="text/javascript">
                (function($){
                        //If .woocommerce-message is visible
                        $(".woocommerce-message").each(function() {
                                if ($(this).css("visibility") == "visible") {

                                    //Trigger side cart .open-side-cart
                                    setTimeout(function(){
                                        $( ".open-side-cart" ).click();
                                    }, 500);

                                    //Nothing Happen
                                } else {
                                        return false;
                                }
                        });
                })(jQuery);
            </script>
    <?php
    }
}