沒有人可以給你一個關於如何獲得自定義字段值的答案。你應該能夠自己找到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+上測試並正常工作。
最後一件事:你一定需要在添加自定義複選框字段(結賬)功能添加一個條件,以隱藏它,當一個會員產品在購物車。