WooCommerce Add_to_Cart操作上的Lightbox弹出窗口

时间:2013-05-08 作者:Chris

我想在WooCommerce中创建一个模式“弹出”窗口,在单击“添加到购物车”按钮时显示。这必须在实际将产品添加到购物车的WC操作之后,而不是在任何重定向之前发生。

我已经找到了一些可能/可能对我有用的挂钩、操作和过滤器,但我不确定我需要哪些以及如何正确使用它们(抱歉,我是WooCom n00b):

  • woocommerce_template_loop_add_to_cart
  • woocommerce_template_single_add_to_cart
  • woocommerce_after_add_to_cart_buttonadd_to_cart_redirect 筛选$url我也不知道如何在PHP中真正触发灯箱!(好的,在HTML中,我使用了一个元素,比如必须单击的超链接,但是如何在PHP执行的某个点触发相同的事情?--我需要AJAX吗?)

    最后,我计划使用ThickBox,因为它与WordPress捆绑在一起,是否有任何理由避免使用ThickBox和/或提供更好的选项,或者是否有与WooCommerce捆绑在一起的lightbox实现?

    非常感谢您的帮助!

1 个回复
最合适的回答,由SO网友:adelval 整理而成

以下内容适用于我的产品归档页面(例如,这些页面既包括主商店页面,也包括产品类别的归档页面)。

它将在thickbox中显示当前购物车的内容。我之所以选择在这个示例中显示这一点,是因为这是单击“添加到购物车”按钮后通过Ajax返回的数据,但您可能希望在框中显示不同类型的信息。例如,通过查看周围的html元素,可以获得刚刚添加的产品的product\\u id。

在主题的功能中。php(或者在主题的类定义中,如果有)可能有一些“enqueue\\u scripts”函数。您应该将其添加到此函数中,以确保加载thickbox脚本。

if (is_woocommerce() && is_archive()) {
    wp_enqueue_script( \'frontend-custom\', get_template_directory_uri() . \'/js/frontend-custom.js\', array("jquery"));
    add_thickbox();
}
在一个文件中(在您的主题目录中)js/frontend-custom。js(或任何有主题js的地方):

jQuery(document).ready(function($) {
    $(\'body\').on(\'added_to_cart\',function(e,data) {
        //alert(\'Added \' + data[\'div.widget_shopping_cart_content\']);
        if ($(\'#hidden_cart\').length == 0) { //add cart contents only once
            //$(\'.added_to_cart\').after(\'<a href="#TB_inline?width=600&height=550&inlineId=hidden_cart" class="thickbox">View my inline content!</a>\');
            $(this).append(\'<a href="#TB_inline?width=300&height=550&inlineId=hidden_cart" id="show_hidden_cart" title="<h2>Cart</h2>" class="thickbox" style="display:none"></a>\');
            $(this).append(\'<div id="hidden_cart" style="display:none">\'+data[\'div.widget_shopping_cart_content\']+\'</div>\');
        }
        $(\'#show_hidden_cart\').click();
    });
});
其他注意事项:

我想您也可以从php直接将javascript输出到页面中。在这种情况下,我想你可能想add_action(\'woocommerce_ajax_added_to_cart\', \'myfunction\');此操作在内部运行woocommerce_ajax_add_to_cart() 在将项目添加到购物车之后(通过验证等),但在重定向之前。

单个产品页面的工作方式不同(“添加到购物车”是一个普通的php表单,不涉及ajax)。

我还没有对此进行测试,但WooCommerce有自己的“Prettypoto”。js”,它通过在href链接中添加“rel=”prettypoto“\'来工作,与上面示例中的thickbox类的工作原理非常相似。您可能想尝试一下保持设计与WooCommerce的一致性。

结束

相关推荐

主题未正确调用jQuery

我正在开发一个主题,我调用了jquery以及主题队列中的其他JS文件。php文件。出于某种原因,只有托管在googles服务器上的Jquery文件才将主题URL添加到URL路径中,因此它不会加载主题URL,并导致其他JS文件无法正确加载。钩子做得很好,它只指向他们的服务器,不包括get\\u bloginfo或get\\u template\\u uri。将我的主题URL添加到的文件是: \'http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery