gpt4 book ai didi

php - WooCommerce 添加到购物车特定产品 ID 的自定义重定向

转载 作者:行者123 更新时间:2023-12-04 07:58:06 29 4
gpt4 key购买 nike

我正在尝试添加到购物车重定向,更改特定产品 ID 的 URL
作为起点,我找到了以下代码(来源:https://jeroensormani.com/redirect-users-after-add-to-cart/)

   function my_custom_add_to_cart_redirect( $url ) {

if ( ! isset( $_REQUEST['add-to-cart'] ) || ! is_numeric( $_REQUEST['add-to-cart'] ) ) {
return $url;
}

$product_id = apply_filters( 'woocommerce_add_to_cart_product_id', absint( $_REQUEST['add-to-cart'] ) );

// Only redirect the product IDs in the array to the checkout
if ( in_array( $product_id, array( 1, 16, 24) ) ) {
$url = "https://mywebsite.com/";
}

return $url;

}
add_filter( 'woocommerce_add_to_cart_redirect', 'my_custom_add_to_cart_redirect' );
这似乎得到了其他人的认可。对我来说,当应用条件时,它似乎忽略了重定向注入(inject)。它在条件被忽略时起作用:
function my_custom_add_to_cart_redirect( $url ) {
$url = "https://mywebsite.com/";
return $url;
}
add_filter( 'woocommerce_add_to_cart_redirect', 'my_custom_add_to_cart_redirect' );
我的结论/猜测是,条件或过滤器中有一些东西已经过时了,但我无法弄清楚出了什么问题。我正在研究其他基于 woocommerce_add_to_cart_redirect 钩子(Hook)的模拟器代码,并尝试了无数片段和函数组合,但无论何时应用条件,我都无法让它们中的任何一个工作。
[编辑] 现在我想起来,这很可能是一个查询问题。但不太清楚该怎么做。
任何帮助将不胜感激。

最佳答案

首先,woocommerce_add_to_cart_redirect 有 2 个可用参数过滤钩。所以是的,你发现的代码有点过时了。
对于每个人来说,如果你启用了 ,这个钩子(Hook)就可以工作。 “添加成功后跳转到购物车页面” WooCommerce 设置 > 产品(选项卡)上的选项。
现在,WooCommerce 中有 2 种添加到购物车:

  • Ajax 加入购物车,
  • 正常 添加到购物车。

  • 钩子(Hook) woocommerce_add_to_cart_redirect仅适用于 正常 添加到购物车以定位特定产品,因为您无法使用 处理产品 ID Ajax 添加到购物车以进行重定向(见下文)。
    对于 加入购物车 the hook is defined in here像:
    'cart_url' => apply_filters( 'woocommerce_add_to_cart_redirect', wc_get_cart_url(), null ),
    其中第二个参数设置为 null .

    对于 加入购物车 the hook is defined in here像:
    $url = apply_filters( 'woocommerce_add_to_cart_redirect', $url, $adding_to_cart );
    在哪里 $adding_to_cart (第二个参数)是产品对象 defined in here像:
    $adding_to_cart = wc_get_product( $product_id );

    这是 的工作代码的正确示例加入购物车 处理特定产品 ID 自定义重定向:
    add_filter( 'woocommerce_add_to_cart_redirect', 'custom_add_to_cart_redirect', 10, 2 );
    function custom_add_to_cart_redirect( $redirect_url, $product ) {
    $product_ids = array( 37, 22, 53, 40 ); // Here set your product Ids in the array

    // Only redirect the product IDs in the array to the checkout
    if ( is_object($product) && in_array( $product->get_id(), $product_ids ) ) {
    $redirect_url = wc_get_checkout_url();
    }

    return $redirect_url;
    }
    代码位于事件子主题(或事件主题)的 functions.php 文件中。经过测试并适用于正常添加到购物车。

    To handle Ajax add to cart redirection to a custom Url for specific products, Some jQuery code will be required…

    关于php - WooCommerce 添加到购物车特定产品 ID 的自定义重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66596497/

    29 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com