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

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

15.01.2019

141

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

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

Заведем в профиле клиента (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_usermeta($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.

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Массовое изменение метаполей

Массовое изменение метаполей

Известная проблема/неудобство wordpress — обновление метаполей, т.е. чтобы обновить метаполе необходимо войти в запись и обновить ее. Массовое редактирование (например поменять статус записей или т.п.) в данном случае не помогает Читать далее »

Субкатегории в категориях Woocommerce

Субкатегории в категориях Woocommerce

В шаблоне вывода категорий Woocommerce к каждой категории можно выводить список субкатегорий. Для этого в шаблоне content-product_cat.php, перед закрывающим тегом /li вставляем следующее <div class="podrazdely"> <?php $wsubargs = array( 'hierarchical' Читать далее »

Плагины для woocommerce (нюансы)

Плагины для woocommerce (нюансы)

Рассмотрим различные плагины дополняющие функционал woocommerce, а также различные нюансы их использования. YITH WooCommerce Wishlist Плагин для добавление в ИМ раздела Избранное. В который можно/нужно помещать товары которые могут понадобится Читать далее »

/

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

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

Несколько менеджеров магазина
Быстрое редактирование записи (Quick edit)
Рекомендации для васБыстрое редактирование записи (Quick edit)Opttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.