【问题标题】:Woocommerce - Enable AJAX add to cart buttons only on specific pageWoocommerce - 仅在特定页面上启用 AJAX 添加到购物车按钮
【发布时间】:2019-01-18 16:34:26
【问题描述】:

在我的 Woocommerce 商店设置中,我检查了该选项:

[✓] 添加成功后重定向到购物车页面。

这对我店里 99% 的人来说都是好的行为。

在 1 个单页(带有自定义模板的自定义页面)上,我需要启用 Ajax 功能。

有没有办法在functions.php中完成这个任务?

【问题讨论】:

  • 您要启用基于产品 ID 还是基于单个产品页面上使用的自定义模板的 AJAX 添加到购物车?
  • 嗨,我需要它基于自定义模板(或页面/url),因为我需要启用 ajax 的相同产品也可以在不需要 ajax 的其他页面上使用..谢谢指出这一点。
  • 那么这个自定义模板是单一产品类型,只显示一个产品吗?
  • 在我的电子商务中,我有 10 种产品可从默认的 woocommerce 页面(商店/目录页面、单个产品页面...)获得,这些页面不需要 ajax。然后我在自定义页面上有相同的 10 个产品(插入 [add_to_cart id="xx"] 短代码),它们确实需要 ajax 功能。我希望我现在清楚了:)
  • 好的,感谢您的澄清,这很有意义。

标签: ajax woocommerce


【解决方案1】:

好的,将此代码插入您的functions.php。您必须将变量 $your_ajax_page_slug 替换为您希望禁用重定向到购物车功能的页面名称。确保您已在设置中选中“启用 AJAX 添加到存档上的购物车按钮”。

add_filter( 'woocommerce_get_script_data', 'modify_woocommerce_get_script_data', 20, 2 );

function modify_woocommerce_get_script_data ( $params, $handle ) {
    global $wp;

    $page_slug = '';
    $your_ajax_page_slug = 'your-page-slug';
    $current_url = home_url( $wp->request );

    // Break the URL by the delimiter
    $url_pieces = explode('/', $current_url);

    // Get the page slug
    if( is_array( $url_pieces ) )
        $page_slug = end( $url_pieces );

    if( $handle == 'wc-add-to-cart' && $page_slug == $your_ajax_page_slug ) {
        $params['cart_redirect_after_add'] = false;
    }

    return $params;
}

【讨论】:

  • 非常感谢安德鲁。为了让它工作,我还必须激活:“启用 AJAX 添加到档案上的购物车按钮”,这对我来说很有意义。但是,您是否知道“成功添加后重定向到购物车页面”和“启用存档上的 AJAX 添加到购物车按钮”这两个问题是否已启用?
  • 啊,是的,抱歉,您需要启用这两个选项。将更新我的答案。
  • 您可以同时签入设置,WooCommerce 不会阻止您这样做。我不知道你的网站是如何设置的,所以我不能说它会产生任何问题。确保在部署到生产环境之前进行测试。
  • 目前一切似乎都按预期工作。谢谢!
  • 别担心,我今天从中学到了一些东西,所以我们都赢了:)
猜你喜欢
  • 2018-10-30
  • 2018-07-28
  • 2018-05-12
  • 2014-11-11
  • 2018-03-05
  • 2018-07-21
  • 2013-12-24
  • 2015-12-30
相关资源
最近更新 更多