Я управляю интернет-магазином с использованием WooCommerce, и мне нужно разрешить менеджерам или администраторам магазинов выбирать существующего клиента непосредственно из интерфейса при размещении заказа. В настоящее время эта функциональность ограничена серверной частью, но я хочу, чтобы она была доступна на странице оформления заказа или в форме индивидуального заказа на внешней стороне.
*Как я могу реализовать эту функцию выбора клиентов во внешнем интерфейсе? Существуют ли конкретные плагины или примеры пользовательского кода, которые могут помочь в этом?
🤔 А знаете ли вы, что...
PHP - это акроним рекурсивного сокращения, означающего 'PHP: Hypertext Preprocessor'.
// Admin Customer Selection WooCommerce
function add_customer_selection_field_for_admin()
{
if (current_user_can('administrator')) {
$customers = get_users(array('role__in' => array('customer', 'subscriber')));
echo '<p class = "form-row form-row-wide">';
echo '<label for = "customer_selection">' . __('Select Customer') . '</label>';
echo '<select required name = "customer_selection" id = "customer_selection">';
echo '<option value = "">' . __('Select a customer') . '</option>';
foreach ($customers as $customer) {
echo '<option value = "' . esc_attr($customer->ID) . '">' . esc_html($customer->display_name . ' (' . $customer->user_email . ')') . '</option>';
}
echo '</select>';
echo '</p>';
}
}
add_action('woocommerce_before_order_notes', 'add_customer_selection_field_for_admin');
function assign_order_to_selected_customer($order_id)
{
if (current_user_can('administrator') && isset($_POST['customer_selection']) && !empty($_POST['customer_selection'])) {
$customer_id = absint($_POST['customer_selection']);
if ($customer_id) {
update_post_meta($order_id, '_customer_user', $customer_id);
}
}
}
add_action('woocommerce_checkout_update_order_meta', 'assign_order_to_selected_customer');