1
我正在使用woocommerce和wordpress開發項目,我需要在其中實施特定功能。該項目要求某些產品標記爲「租賃」。如果用戶添加了「租賃」類別的產品,用戶將被重定向到一個頁面,其中將填寫一個將自動包含產品sku的聯繫表單。該產品不能添加到購物車中。WooCommerce重定向如果用戶將產品從某個類別添加到購物車
我試過使用過濾器「woocommerce_add_to_cart_redirect」。我檢查了產品是否屬於某個類別,如果是,它將被重定向到聯繫頁面。問題在於該產品已添加到購物車中。
add_filter('woocommerce_add_to_cart_redirect', 'rv_redirect_on_add_to_cart');
function rv_redirect_on_add_to_cart() {
//Get product ID
if (isset($_POST['add-to-cart'])) {
$product_id = (int) apply_filters('woocommerce_add_to_cart_product_id', $_POST['add-to-cart']);
//Check if product ID is in the proper taxonomy and return the URL to the redirect product
if (has_term('rental', 'product_cat', $product_id)){
$product = wc_get_product($product_id);
$_POST['rental-product-sku'] = $product->get_sku();
return get_permalink(get_page_by_path('rent-a-book'));
}
}
}
於是,我就用自定義驗證「woocommerce_add_to_cart_validation」來檢查產品所屬的類別,如果是這樣,則返回false。
add_action('woocommerce_add_to_cart_validation', 'add_the_date_validation', 11, 2);
function add_the_date_validation($passed, $product_id) {
$terms = wp_get_post_terms($product_id, 'product_cat');
foreach ($terms as $term) $categories[] = $term->slug;
if(count($categories) == 0){
return true;
}
if (in_array('rental', $categories)) {
return false;
} else {
return true;
}
return true;
}
問題是,如果驗證返回false,未加載重定向過濾器和用戶沒有重定向到接觸頁面。我一直在研究一段時間,而且我的嘗試沒有成功。有人可以幫我弄這個嗎?
謝謝
謝謝你的回覆,但它沒有奏效。我認爲,如果驗證返回false,則重定向根本不起作用,即使是在相同的函數中。 –
我不知道你是否像我所做的那樣做...如果你提供的鏈接是正確的,'wp_safe_redirect'(在函數內部找到)會重定向你的頁面...上面的函數將跳過驗證過程。 – Reigel
我做了一些故障排除。我不認爲wp_safe_redirect正在工作。 –