gpt4 book ai didi

php - 如何仅跳过某些产品的 woocommerce 购物车页面?

转载 作者:行者123 更新时间:2023-12-03 16:16:15 26 4
gpt4 key购买 nike

我将此添加到我的functions.php文件中:

add_filter ('woocommerce_add_to_cart_redirect', 'woo_redirect_to_checkout');
function woo_redirect_to_checkout() {
$checkout_url = WC()->cart->get_checkout_url();
return $checkout_url;
}

但现在,所有的产品都在重新引导海峡结账。我只想在一种产品中使用此选项。这是我可以向同一个文件管理器添加产品 ID 的方法吗?

谢谢!

最佳答案

我为此写了一个小插件,在这里分享。该插件向产品元框添加了一个小复选框,因此您可以指定哪些产品应触发自动跳转到结帐。基本使用相同 woocommerce_add_to_cart_redirect像其他答案一样过滤,但提供管理后端选项来确定哪些产品触发重定向。

<?php
/**
* Plugin Name: Redirect to checkout
* Plugin URI: http://stackoverflow.com/q/32962653/383847
* Description: redirect to checkout for certain products
* Version: 1.0
* Author: Kathy Darling
* Author URI: http://kathyisawesome.com
* Requires at least: 3.8
* Tested up to: 3.9
*
* Text Domain: kia-redirect-to-checkout
* Domain Path: /languages/
*
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}

/*
* Add text inputs to product metabox
*/
function kia_add_to_wc_metabox(){
global $post;

echo '<div class="options_group">';

// Suggested Price
echo woocommerce_wp_checkbox( array(
'id' => '_redirect_to_checkout',
'label' => __( 'Redirect to checkout', 'kia-redirect-to-checkout' ) ,
'description' => __( 'When this item is added to the cart, re-direct the customer to checkout immediately.', 'kia-redirect-to-checkout' )
)
);

echo '</div>';

}
add_action( 'woocommerce_product_options_general_product_data', 'kia_add_to_wc_metabox' );


/*
* Save extra meta info
*/
function kia_process_wc_meta_box( $post_id, $post ) {

if ( isset( $_POST['_redirect_to_checkout'] ) ) {
update_post_meta( $post_id, '_redirect_to_checkout', 'yes' );
} else {
update_post_meta( $post_id, '_redirect_to_checkout', 'no' );
}

}
add_action( 'woocommerce_process_product_meta', 'kia_process_wc_meta_box', 1, 2 );


/*
* Redirect to checkout
*/
function kia_add_to_cart_redirect( $url ){

// If product is one of our special types
if ( is_numeric( $_REQUEST['add-to-cart'] ) && kia_maybe_redirect_cart( (int) $_REQUEST['add-to-cart'] ) ) {

// Remove default cart message
WC()->clear_messages();

// Redirect to checkout
$url = WC()->cart->get_checkout_url();
}

return $url;
}
add_filter( 'woocommerce_add_to_cart_redirect', 'kia_add_to_cart_redirect' );


/*
* check if an item has custom field
*/
function kia_maybe_redirect_cart( $product_id ){

if ( 'yes' == get_post_meta( $product_id, '_redirect_to_checkout', true ) ){
return TRUE;
} else {
return false;
}
}

更新 WooCommerce 3.0+
<?php
/**
* Plugin Name: WC Redirect to checkout
* Plugin URI: http://stackoverflow.com/q/32962653/383847
* Description: Redirect to checkout for certain products
* Version: 1.0
* Author: Kathy Darling
* Author URI: http://kathyisawesome.com
* Requires at least: 3.8
* Tested up to: 3.9
* WC requires at least: 3.1.0
* WC tested up to: 4.0.1
*
* Text Domain: kia-redirect-to-checkout
* Domain Path: /languages/
*
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly
}

/**
* Add text inputs to product metabox
*/
function kia_add_to_wc_metabox(){
global $post;

echo '<div class="options_group">';

// Suggested Price
echo woocommerce_wp_checkbox( array(
'id' => '_redirect_to_checkout',
'label' => __( 'Redirect to checkout', 'kia-redirect-to-checkout' ) ,
'description' => __( 'When this item is added to the cart, re-direct the customer to checkout immediately.', 'kia-redirect-to-checkout' )
)
);

echo '</div>';

}
add_action( 'woocommerce_product_options_general_product_data', 'kia_add_to_wc_metabox' );


/**
* Save extra meta info
*
* @param WC_Product $product
*/
function kia_process_wc_meta_box( $product ) {

if ( isset( $_POST['_redirect_to_checkout'] ) ) {
$product->update_meta_data( '_redirect_to_checkout', 'yes' );
} else {
$product->update_meta_data( '_redirect_to_checkout', 'no' );
}

}
add_action( 'woocommerce_admin_process_product_object', 'kia_process_wc_meta_box' );


/**
* Redirect to checkout
*
* @param WC_Product $product
*/
function kia_add_to_cart_redirect( $url, $product ) {

// If product is one of our special products.
if ( kia_maybe_redirect_cart( $product ) ) {

// Remove default cart message.
wc_clear_notices();

// Redirect to checkout.
$url = wc_get_checkout_url();
}

return $url;
}
add_filter( 'woocommerce_add_to_cart_redirect', 'kia_add_to_cart_redirect', 10, 2 );


/**
* Check if an item has custom field.
*
* @param WC_Product $product
*/
function kia_maybe_redirect_cart( $product ) {
return wc_string_to_bool( $product instanceof WC_Product && $product->get_meta( '_redirect_to_checkout', true ) );
}

https://gist.github.com/helgatheviking/f76b97d7d19813538e32b8f5f2dae6ec

关于php - 如何仅跳过某些产品的 woocommerce 购物车页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32962653/

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