2017-09-15 85 views
2

我希望在結賬後使用woocommerce中的2個重定向鏈接。第一個是將任何用戶發送到感謝頁面的標準結帳鏈接。另一個是如果他們在結賬時選中一個表示他們對會員有興趣的方框。如果他們是我們希望他們被重定向到會員區。根據WooCommerce中的自定義結帳字段結賬後自定義重定向

我發現這個代碼感謝頁面重定向:

add_action('woocommerce_thankyou', 'bbloomer_redirectcustom'); 
function bbloomer_redirectcustom($order_id){ 
    $order = new WC_Order($order_id); 

    $membership = WHAT FIELD HERE FROM ORDER? // Need a way to set this variable to checkbox true or not. 

    $url = 'http://yoursite.com/thank-you'; //Thank you page 
    $mem_url = 'http://yoursite.com/members'; // Membership page 

    if ($order->status != 'failed' && !$membership) { 
     wp_redirect($url); 
     exit; 
    } else { 
     wp_redirect($mem_url); 
     exit; 
    } 
} 

我有辦法添加的複選框結賬頁面(使用嗚結帳字段編輯器專業版插件)。我只需要這種代碼(我還沒有測試過)的方式來檢查當訂單被放置並重定向到另一頁時是否檢查了成員資格字段。

僅供參考,我們使用貝寶作爲我們的主要支付網關。我不知道這是否有所作爲。

回答

0

沒有人可以給你一個關於如何獲得自定義字段值的答案。你應該能夠自己找到wp_postmeta數據庫表(對於您使用此複選框的訂單ID)。然後你將使用get_post_meta()函數來獲取它(如我在下面的答案)。

現在你不需要插件來在你的結賬頁面輸出一個自定義的複選框字段。你可以用一些簡單的自定義代碼來做到這一點(你只需要告訴你想要在什麼位置)。

要進行自定義重定向,woocommerce_thankyou是不正確的鉤

下面你會發現一些代碼會輸出一個自定義複選框(就在訂單註釋後面),這將在訂單提交時保存該值。如果複選框被選中,客戶將被重定向到您的特殊頁面「會員」

您不需要其他重定向,因爲在提交訂單後默認情況下,客戶被重定向到謝謝頁面。

這裏是代碼(評論)

// Add the custom checkout field 
add_filter('woocommerce_after_order_notes', 'add_membership_checkbox_checkout_field'); 
function add_membership_checkbox_checkout_field($checkout) { 

    woocommerce_form_field('membership_interested', array(
     'type'  => 'checkbox', 
     'class'  => array('my-field-class form-row-wide'), 
     'label'  => __('I am interested in a membership plan (optional)', 'woocommerce'), 
     'required' => false, 
    ), $checkout->get_value('membership_interested')); 
} 

// Save the custom checkout field in the order meta 
add_action('woocommerce_checkout_update_order_meta', 'save_membership_checkbox_checkout_field'); 
function save_membership_checkbox_checkout_field($order_id) { 
    if (! empty($_POST['membership_interested'])) { 
     update_post_meta($order_id, '_membership_interested', sanitize_text_field($_POST['membership_interested'])); 
    } 
} 

// Custom conditional_redirect on thank you page 
add_action('template_redirect', 'thankyou_custom_conditional_redirect'); 
function thankyou_custom_conditional_redirect(){ 
    // Only in thank you page 
    if (! is_wc_endpoint_url('order-received')) return; 

    global $wp; 

    $order_id = intval(str_replace('checkout/order-received/', '', $wp->request)); 

    $membership = get_post_meta($order_id, '_membership_interested', true); 

    if ($membership) { 
     wp_redirect(home_url('/members/')); 
     exit; 
    } else return; 
} 

代碼放在您的活動子主題(或主題)的function.php文件或也以任何插件文件。

此代碼在Woocommerce 3+上測試並正常工作。

最後一件事:你一定需要在添加自定義複選框字段(結賬)功能添加一個條件,以隱藏它,當一個會員產品在購物車。

相關問題