【发布时间】:2018-08-14 02:36:39
【问题描述】:
我正在尝试向我的 child-themes functions.php 文件添加一个自定义函数,其中一个复选框被添加到结帐页面上的账单详细信息表单的底部。
此复选框询问客户是否愿意成为批发客户。
function customise_checkout_field_with_wholesale_option($checkout) {
echo '<div id="wholesale_checkbox_wrap">';
woocommerce_form_field('wholesale_checkbox', array(
'type' => 'checkbox',
'class' => array('input-checkbox'),
'label' => __('Would you like to apply for a wholesale account?'),
'placeholder' => __('wholesale'),
'required' => false,
'value' => true
), $checkout->get_value('wholesale_checkbox'));
echo '</div>';
}
这很好用,但是我在下一部分遇到问题..
如果客户选中复选框,我希望客户用户角色保存为“wholesale_customer”而不是“客户”。
add_action('woocommerce_after_checkout_billing_form', 'customise_checkout_field_with_wholesale_option');
function wholesale_customer( $order_id ) {
$order = new WC_Order( $order_id );
if (isset($_POST['wholesale_checkbox'])) {
if ($order->user_id > 0) {
$user = new WP_User($order->user_id);
// Remove role
$user->remove_role('customer');
// Add role
$user->add_role('wholesale_customer');
}
}
}
add_action( 'woocommerce_thankyou', 'wholesale_customer' );
当我删除wholesale_checkbox if 语句时,上述功能通过将客户保存为“wholesale_customer”来工作。但如果包含 if 语句,它总是将角色保存为“客户”。
我哪里错了?干杯
【问题讨论】:
标签: php wordpress woocommerce hook-woocommerce user-roles