WooCommerce 3中定义的产品类别的自定义添加到购物车重定向

时间:2017-09-17 05:09:39

标签: php wordpress woocommerce checkout product

在WooCommerce网站上,我希望在产品添加到购物车后立即在结帐页面重定向客户。但是我们希望它适用于特定的产品类别,而不是所有添加到购物车按钮。

我曾尝试查找过去的解决方案,但他们要么在我更新def days_to_reach_n_steps(step_records, n): """Number of days taken to reach the aimed n steps""" total_steps = 0 index = 0 days = 0 while total_steps < n and index < len(step_records): total_steps += step_records[index][1] index += 1 days += 1 if total_steps < n and index >= len(step_records): days = None return days step_records = [('2010-01-01',1), ('2010-01-02',2), ('2010-01-03',3)] days = days_to_reach_n_steps(step_records, 6) '''Aim_step is reached in 3 days so returns 6''' days = days_to_reach_n_steps(step_records, 15) '''Aim_step is not reached so returns None''' print(days) 时崩溃我的网站,要么已过时且不再有效。

我真的很感激任何帮助。

1 个答案:

答案 0 :(得分:0)

  

已更新:添加到购物车重定向无法与商店和档案页面上的ajax添加到购物车。

您可以在商店和档案页面中选择选择

  1. 在商店和档案页面禁用ajax add-to-cart(WC设置&gt;产品&gt;显示)。
  2. 添加以下代码,通过链接到产品的按钮替换“添加到购物车”按钮:
  3. 这第二个选项似乎是最好的选择:

    // Replacing add to cart button link 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;
    
        $button_text = __( 'View product', 'woocommerce' );
        $button = '<a class="button" href="' . $product->get_permalink() . '">' . $button_text . '</a>';
        return $button;
    }
    

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

    定制条件重定向(对于定义的产品类别):

    现在,您可以使用隐藏在 woocommerce_add_to_cart_redirect 过滤器挂钩中的自定义功能,该功能会在将产品添加到购物车时重定向客户(对于已定义的产品类

    add_filter( 'woocommerce_add_to_cart_redirect', 'add_to_cart_checkout_redirection', 99, 1 );
    function add_to_cart_checkout_redirection( $url ) {
    
        // HERE define your category
        $category = 'clothing';
    
        if ( ! isset( $_REQUEST['add-to-cart'] ) ) return $url;
    
        // Get the product id when it's available (on add to cart click)
        $product_id = absint( $_REQUEST['add-to-cart'] );
    
        // Checkout redirection url only for your defined product category
        if( has_term( $category, 'product_cat', $product_id ) ){
            // Clear add to cart notice (with the cart link).
            wc_clear_notices();
            $url = wc_get_checkout_url();
        }
    
        return $url;
    }
    

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

    代码在Woocommerce 3+上测试并正常工作