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

woocommerce在单品页面添加到购物车按钮

羊舌墨一
2023-03-14
add_filter( 'woocommerce_add_to_cart_redirect', 'rv_redirect_to_url' );
function rv_redirect_to_url() {

    global $woocommerce, $post;

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

    $rv_woo_redirect_url = get_post_meta( $product_id, '_rv_woo_product_custom_redirect_url', true );

    if ( ! empty( $rv_woo_redirect_url ) ) {

        wp_redirect( esc_url( $rv_woo_redirect_url ) ); exit;

    }

}

如何更改代码以使其只适用于已定义的产品类别?

共有1个答案

陈霄
2023-03-14

更新(当它是已定义的产品类别时,为正确的自定义url)

使用woocommerce_add_to_cart_redirection筛选器挂钩中挂钩的自定义函数,该函数将在产品添加到购物车时重定向客户(对于已定义的产品类别):

add_filter( 'woocommerce_add_to_cart_redirect', 'conditional_add_to_cart_redirection', 99, 1 );
function conditional_add_to_cart_redirection( $url ) {

    // ==> HERE define your product category or categories in the array
    $category = array( 'clothing', 'music' );

    if ( ! isset( $_REQUEST['add-to-cart'] ) ) return $url; // Very important!

    // When it's available (on add to cart click), get the product ID
    $product_id = absint( $_REQUEST['add-to-cart'] );

    // Get the custom url from product post meta data
    $custom_url = get_post_meta( $product_id, '_rv_woo_product_custom_redirect_url', true );

    // Exit to normal, If the custom URL redirection is not set in the product
    if( empty( $custom_url ) ) return $url;

    // Custom redirection only for your defined product category(ies)
    if( has_term( $category, 'product_cat', $product_id ) ){
        // Clear add to cart notice (with the cart link).
        wc_clear_notices();
        $url = $custom_url; // Updated here
    }
    return $url;
}

代码存在于活动子主题(或主题)的function.php文件中,也存在于任何插件文件中。

    null
// Conditionally changing add to cart button link and text on shop and archives
add_filter( 'woocommerce_loop_add_to_cart_link', 'replacing_add_to_cart_button', 10, 2 );
function replacing_add_to_cart_button( $button, $product ) {
    if( $product->is_type( 'variable-subscription' ) || $product->is_type( 'variable' ) ) return $button;

    // ==> HERE define your product category or categories in the array
    $category = array( 'clothing', 'music' );

    // Check that the custom url from product post meta data is not empty
    $custom_url = get_post_meta( $post->ID, '_rv_woo_product_custom_redirect_url', true );
    if( empty( $custom_url ) )  return $button;

    // Check if the current product has a defined product category(ies)
    if( ! has_term( $category, 'product_cat', $post->ID ) ) return $button;

    $button_text = __( 'View product', 'woocommerce' );
    $button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>';

    return $button;
}
 类似资料: