Задать вопрос
  • Как в woocommerce сделать отправку писем о заказе на разные почты в зависимости от зоны доставки?

    Задача отправлять письмо разным менеджерам в зависимости от значения поля 'billing_state'

    Источник: https://theme-fusion.com/forums/topic/woocommerce-...

    Использую фильтр и добавляю получателя(менеджер по конкретному региону).
    Значение региона указанного в форме получаем через функцию get_billing_state(); См. на wp-kama по другим полям формы.
    Примечание: Регионы добавлены ранее через фильтр woocommerce_states

    add_filter( 'woocommerce_email_recipient_new_order', 'add_recipients_email_notifications', 10, 2 );
    
    function add_recipients_email_notifications( $recipient, $order ) {
    
    if ( ! is_a( $order, 'WC_Order' ) ) return $recipient;
    
    // Массив со значениями для проверки. Здесь области. Оказалось, что регионы получает заглавными.
    $region1 = array( 'ОМСКАЯ ОБЛАСТЬ', 'ОРЕНБУРГСКАЯ ОБЛАСТЬ', 'РЕСПУБЛИКА МОРДОВИЯ' );
    $region2 = array( 'ПЕНЗЕНСКАЯ ОБЛАСТЬ', 'ПЕРМСКИЙ КРАЙ', 'РОСТОВСКАЯ ОБЛАСТЬ');
    
    //Получаем регион доставки.
    // У меня поле shiping отключено, поэтому сразу получаю из биллинга без IF
    $user_region = $order->get_billing_state();
    
    /* В исходнике проверка была по полю Zip-code get_shipping_postcode;
    * $user_zip_zone =  $order->get_shipping_postcode();
    * if(empty($user_zip_zone)) //если пустое, то получим из биллинга
    *    $user_zip_zone = $order->get_billing_postcode();
    */
    
    // Добавим получателя, если регион содержится в массиве
    if ( in_array( $user_region, $region1)) {
            $recipient .= ', manager1@gmail.com'; // первый менеджер
        } elseif ( in_array( $user_region, $region2) ) {
        $recipient .= ', manager2@gmail.com'; //второй менеджер
        }
    
    return $recipient;
    }
    
    // Добавляем регионы. Сокращено для удобства
    add_filter( 'woocommerce_states', 'custom_woocommerce_states' );
    
    function custom_woocommerce_states( $states ) {
        $states['RU'] = array(
    'Омская область' => 'Омская область',
    'Оренбургская область' => 'Оренбургская область',
    'Пензенская область' => 'Пензенская область',
    'Пермский край' => 'Пермский край',
    'Республика Мордовия' => 'Республика Мордовия',
    'Ростовская область' => 'Ростовская область',
    );
    return $states;
    }


    Исходник
    add_filter( 'woocommerce_email_recipient_new_order', 'cond_recipients_email_notifications', 10, 2 );
    function cond_recipients_email_notifications( $recipient, $order ) {
    
    if ( ! is_a( $order, 'WC_Order' ) ) return $recipient;
    
    // TARGET-ZIP-CODE
    $zip_zone1 = array( 'ZIP-Code', 'ZIP-Code', 'ZIP-Code' );
    $zip_zone2 = array( 'ZIP-Code', 'ZIP-Code', 'ZIP-Code' );
    
    // User ZIP-CODE 
    $user_zip_zone =  $order->get_shipping_postcode();
    if(empty($user_shipping_postcode))
        $user_zip_zone = $order->get_billing_postcode();
    
    // ADD EMAIL IF ZIP-CODE MATCHES TARGET-ZIP-CODE
    if ( in_array( $user_zip_zone, $zip_zone1)) {
                $recipient .= ', EMAIL@DOMAIN.COM';
        } elseif ( in_array( $user_zip_zone, $zip_zone2) ) {
        $recipient .= ', EMAIL@DOMAIN.COM';
        }
    
    return $recipient;
    }
  • Медленная загрузка сайта из-за запроса к IP-адресу 148.251.120.229. Как устранить?

    В моем случае была такая ссылка 'ht'.'tp'.':/'.'/mota'.'8no'.'y.c'.'om' - если ее собрать и проверить по 2ip(.)ru - как раз будет этот IP-шник.
  • Медленная загрузка сайта из-за запроса к IP-адресу 148.251.120.229. Как устранить?

    Спасибо за по подсказку! 4 дня поисков! С помощью ай-болита удалось найти.
    Сайт на джумла, такой-же файл и ссылка именно эта. Причем содержимое файла model.php было в файле advenced.png, в папке расширения для карты сайта /components/com_jmap