当前位置: 首页 > 知识库问答 >
问题:

WooCommerce AJAX添加到购物车-仅限简单产品

郎伟兆
2023-03-14

我遵循了以下关于如何为单个产品将ajax添加到购物车的指南:https://aceplugins.com/ajax-add-to-cart-button-on-the-product-page-woocommerce/

我在我的孩子主题function.php文件中有PHP,它应该工作。

我的问题是,我只想使用remove_action('wp_loaded',数组('WC_Form_Handler','add_to_cart_action'),20);时,一个简单的产品,只有这样,它是可用于其他产品类型。

我尝试将其添加到ace\u ajax\u add\u to\u cart\u handler函数中,如下所示:

function ace_ajax_add_to_cart_handler() {
    WC_Form_Handler::add_to_cart_action();
    WC_AJAX::get_refreshed_fragments();

    remove_action( 'wp_loaded', array( 'WC_Form_Handler', 'add_to_cart_action' ), 20 );
} 
add_action( 'wc_ajax_ace_add_to_cart', 'ace_ajax_add_to_cart_handler' );
add_action( 'wc_ajax_nopriv_ace_add_to_cart', 'ace_ajax_add_to_cart_handler' );

我也尝试了各种功能与条件没有喜悦,例如:

function remove_cart_action(){
    if ( is_product() ) {
    global $product;
    if( $product->is_type( 'simple' ) ){
    // Remove WC Core add to cart handler to prevent double-add
    remove_action( 'wp_loaded', array( 'WC_Form_Handler', 'add_to_cart_action' ), 20 ); 
    }
    }
}
add_action( 'init', 'remove_cart_action', 20);

如有任何建议,将不胜感激-提前感谢

共有1个答案

陆文斌
2023-03-14

我更新了你的代码,但不确定它是否工作,你可以检查它!

function ace_ajax_add_to_cart_handler() {
    WC_Form_Handler::add_to_cart_action();
    WC_AJAX::get_refreshed_fragments();

    $product_id = isset( $_REQUEST['add-to-cart'] ) ? intval( wp_unslash( $_REQUEST['add-to-cart'] ) ) : false;
    if ( $product_id ) {
        $product = wc_get_product( $product_id );
        if ( $product->is_type( 'simple' ) ) {
            remove_action( 'wp_loaded', array( 'WC_Form_Handler', 'add_to_cart_action' ), 20 );
        }
    }
} 
add_action( 'wc_ajax_ace_add_to_cart', 'ace_ajax_add_to_cart_handler' );
add_action( 'wc_ajax_nopriv_ace_add_to_cart', 'ace_ajax_add_to_cart_handler' );
 类似资料:
  • 我经营一家Woocommerce商店,该商店也提供免费产品(_常规价格=0)。客户必须选择数量并将其添加到购物车中,然后下订单才能收到产品。但这并不是Woocommerce的工作原理,它隐藏了所有价格为0的产品的“添加到购物车”链接。并且不会在购物车页面中显示它们。有没有解决这个问题的办法?非常感谢。

  • 我是新来的。我想将产品添加到购物车并列出购物车的所有产品。我已经将Co-Cart插件添加到我的服务器,并且我正在使用Co-Cart API实现购物车相关功能。 我面临的问题是,我不能在我的反应本地应用程序中查看购物车产品。以下是我现在使用的API: 1.将产品添加到购物车: 方法:邮寄 URL:https://www.myhost.com/wp-json/wc/v2/cart/add?token=

  • 我想在单个产品页面中向“添加到购物车”按钮显示产品价值(版本) 我找到了必须编辑的文件:woocommerce\templates\single-product\add-to-cart\external.php 但现在我的“添加到购物车”按钮上什么也没有显示

  • 在商品分类页面上,当有人点击“添加到购物车”时,WooCommerce通过Ajax在此按钮下方添加“查看购物车”。我发现处理这个的脚本是 /assets/js/frontend/add-to-cart.js 现在,我想添加"Procceed to check out",这样某人就可以立即去结账。 这是脚本的输出: 有没有人做过类似的事情?

  • 最初,我选择了一个包(Woo订阅) 然后添加了所有详细信息。 但未提交。 回到网站,所以再次购买我需要选择一个包。所以我选择了这个包,并填写了详细信息,然后转到付款包。 现在在我的购物车中,两个包都存在(即我没有第一次购买就选择的包和最近的包) 如何修复此问题,使最新选定的一个在购物车中,而较早的一个在选定最新的一个后立即删除。 我尝试了这个Woocommerce从购物车中删除所有产品,并将当前产