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

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

15.01.2019

411

Deprecated: Function create_function() is deprecated in /home/t/tiberi6w/opttour.ru/public_html/wp-content/plugins/wp-spamshield/wp-spamshield.php on line 2033

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

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

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

Тэги:

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

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

Подкатегория за подкатегорией

В одной из ранних статей мы отдельно от основного вывода WC выводили подкатегории. В этой статье мы усложним код вывода категорий и сделаем у категорий и вывод товаров. Это даст Читать далее »

WooCommerce and 1C:Enterprise

WooCommerce and 1C:Enterprise

Разбираем на элементы плагин WooCommerce and 1C:Enterprise/1С:Предприятие Data Exchange. Плагин дает функционал обмена данными между сайтом и программой 1С: Предприятие. Некоторые моменты синхронизации сайта с 1С описаны в статье Интеграция Читать далее »

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

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

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

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

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

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