/ Плагины / Несколько менеджеров магазина

Несколько менеджеров магазина

HIT

15.01.2019

1930

Предположим что мы делаем интернет-магазин оптовой компании нацеленной работу с уже имеющимися клиентами. Есть ряд менеджером к котором прикреплены те или иные клиенты. Как сделать так, чтобы заказы распределялись между менеджерами?

Специальное поле — менеджер

Заведем в профиле клиента (user profile) дополнительное поле (менеджер), которое будет заполняться только в бэкенде.

add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );
function extra_user_profile_fields( $user ) { ?>
    <h3>Клиент прикреплен за менеджером</h3>

    <table class="form-table">
    <tr>
        <th><label for="permanager">Менеджер</label></th>
        <td>
            <input type="text" name="permanager" id="permanager" value="<?php echo esc_attr( get_the_author_meta( 'permanager', $user->ID ) ); ?>" class="regular-text" /><br />
            <span class="description"><?php _e("Укажите менеджера за которым прикреплен этот клиент"); ?></span>
        </td>
    </tr>
    </table>
<?php }


add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );
function save_extra_user_profile_fields( $user_id ) {
    if ( !current_user_can( 'edit_user', $user_id ) ) { 
        return false; 
    }
    update_user_meta( $user_id, 'permanager', $_POST['permanager'] );
}

Либо сделаем поле выбора менеджера списком

add_action( 'show_user_profile', 'extra_user_profile_fields' );
add_action( 'edit_user_profile', 'extra_user_profile_fields' );
function extra_user_profile_fields( $user ) { ?>
    <h3>Клиент прикреплен за менеджером</h3>

    <table class="form-table">
    <tr>
        <th><label for="permanager">Менеджер</label></th>
        <td>
            <?php $permanager = get_the_author_meta( 'permanager', $user->ID ); ?>
			<select name="permanager" class="regular-text" id="permanager">
			<option value="maksim" <?php if ( $permanager == 'maksim' ) { echo 'selected="selected"'; } ?>>Максим</option>
			<option value="petr" <?php if ( $permanager == 'petr' ) { echo 'selected="selected"'; } ?>>Петр</option>
			<option value="elena" <?php if ( $permanager == 'elena' ) { echo 'selected="selected"'; } ?>>Елена</option>
			</select>
			<br />
            <span class="description"><?php _e("Укажите менеджера за которым прикреплен этот клиент"); ?></span>
        </td>
    </tr>
    </table>
<?php }

Поле при создании пользователя

Иногда удобнее создавать и заполнять поле при создании пользователя. Добавляем к имеющимся новые функции:

function custom_user_profile_fields($user){
  ?>
    <table class="form-table">
        <tr>
            <th><label for="permanager">Менеджер</label></th>
            <td>
		<select name="permanager" class="regular-text" id="permanager">
		<option value=""> </option>
		<option value="elena">Елена</option>
		<option value="maksim">Максим</option>
		<option value="petr">Пётр</option>
		</select>
            </td>
        </tr>
    </table>
  <?php
}
add_action( 'user_new_form', 'custom_user_profile_fields' );

function save_custom_user_profile_fields($user_id){
    if(!current_user_can('manage_options'))
        return false;

    if (!empty( $_POST['permanager'] )) { update_user_meta($user_id, 'permanager', $_POST['permanager']); }
}
add_action('user_register', 'save_custom_user_profile_fields');
add_action('profile_update', 'save_custom_user_profile_fields');

Отправка писем менеджерам

Далее создаем проверку при отправке

// Определение почты администратора в зависимости от поля менеджер
add_filter( 'woocommerce_email_recipient_new_order', 'conditional_email_recipient', 10, 2 );
function conditional_email_recipient( $recipient, $order ) {
    if( is_admin() ) return $recipient;
	
	$user_id = $order->get_user_id(); 
	$permanager = get_the_author_meta( 'permanager', $user_id );	

    if ( $permanager == 'petr' ) { $recipient = 'mail-1@mail.ru'; }
	elseif ( $permanager == 'maksim' ) { $recipient = 'mail-2@gmail.com'; }
	else {$recipient = 'mail-3@yandex.ru';}

    return $recipient;
}

Если отключить предпоследнюю строку else {$recipient = ‘mail-3@yandex.ru’;}, то почта будет взята из настроек woocommerce.

Выведем произвольное поле в таблице Пользователи

// Выведем Бренд в таблице Пользователи

function new_modify_user_table( $column ) {
    $column['brand_manager'] = 'Бренд';
    return $column;
}
add_filter( 'manage_users_columns', 'new_modify_user_table' );

function new_modify_user_table_row( $val, $column_name, $user_id ) {
    switch ($column_name) {
        case 'brand_manager' :
            return get_the_author_meta( 'brand_manager', $user_id );
        default:
    }
    return $val;
}
add_filter( 'manage_users_custom_column', 'new_modify_user_table_row', 10, 3 );

Добавить 2 колонки сразу:

function new_modify_user_table( $column ) {
    $column['phone'] = 'Phone';
    $column['xyz'] = 'XYZ';
    return $column;
}
add_filter( 'manage_users_columns', 'new_modify_user_table' );

function new_modify_user_table_row( $val, $column_name, $user_id ) {
    switch ($column_name) {
        case 'phone' :
            return get_the_author_meta( 'phone', $user_id );
        case 'xyz' :
            return '';
        default:
    }
    return $val;
}
add_filter( 'manage_users_custom_column', 'new_modify_user_table_row', 10, 3 );
Фильтр и сортировка по произвольному полю пользователя.

Скрыть стандартные колонки в таблице Пользователи

add_action('manage_users_columns','kjl_modify_user_columns');
function kjl_modify_user_columns($column_headers) {
	unset($column_headers['posts']);
	unset($column_headers['role']);
	return $column_headers;
}
[site-socialshare]
  • Похожие записи
  • Комментарии
  • Вложения
Связывание товаров

Связывание товаров

Если товары продаются несколькими частями, но части нужно связать чтобы одну без другой нельзя было приобрести, можно связать такие товары. Как вариант такие товары можно заводить как один товар (в Читать далее »

Настраиваем woocommerce

Настраиваем woocommerce

Настраиваем различные аспекты плагина woocommerce, под текущие задачи. Ваша корзина пуста Шаблон для настроек страницы корзины (когда она пуста) находится в папке woocommerce (локализованная в теме)/cart/cart-empty.php Можно отцентрировать и добавить Читать далее »

/
Подарок за покупку

Подарок за покупку

Изучим и рассмотрим такой инструмент продаж как подарок за покупку. Вариантов такого поощрения может быть масса: подарок при покупке конкретного товара (из конкретной категории), подарок при наборе в корзине определенной Читать далее »

Добавить комментарий

Notice: Функция WP_Styles::add вызвана неправильно. Стиль с дескриптором "editor-buttons" был поставлен в очередь с незарегистрированными зависимостями: dashicons. Дополнительную информацию можно найти на странице «Отладка в WordPress». (Это сообщение было добавлено в версии 6.9.1.) in /home/t/tiberi6w/opttour.ru/public_html/wp-includes/functions.php on line 6131

Пока нет комментариев. Будь первым!

Несколько менеджеров магазина
Версия сайта для слабовидящих
Рекомендации для васВерсия сайта для слабовидящихOpttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.