Поддержка Проблемы и решения Двойной вызов функции

  • Здравствуйте
    Возникла проблема, может кто знает решение?
    В файл functions.php вставляю такой код:

    function notestzakrww(){
    $dfgdfg=array(1,2,3);
    $headers = 'From: Test.ru <ottest@test.ru>' . "\r\n";
    $i=0;
    foreach ($dfgdfg as $ids => $objkt) {
    sleep(5);
    wp_mail('tutest@test.com', 'Title '.$i, 'Message '.$i, $headers);
    $i++;
    }
    }
    add_action('init', 'notestzakrww',100,0);

    Код работает но, вместо 3х e-mail отсылает 6.
    Что только не делал, плагины отключены, пробовал на разных хостингах и т.д.
    Получается функция вызывается не 1 а 2 раза.
    Если кто знает решение поделитесь.

Просмотр 15 ответов — с 1 по 15 (всего 25)
  • приведите код где происходит вставка функции

    Да в любое место файла functions.php, без разницы

    собственно сабж

    приведите код где происходит вставка функции

    Хочу по wp-cron делать рассылку юзерам из массива. Этот код пример теста рассылки. Проблема похожа на баг ВП, т.к. при вызове функции ее чтото еще раз вызывает.

    просто так ничего не бывает. вынесите эту функцию и ёё вызов в отдельный файл, в файле functions.php ей делать нечего

    Упс.

    в файле functions.php ей делать нечего

    Это почему делать нечего? В какой файл?
    Вы сами пробовали? Попробуйте в другом — любом файле, то же самое. Двойной вызов.

    вы, наверное, не поняли…
    создать на хостинге файлик ( например test.php ) и закинуть в него эту функцию и ёё вызов, и обратится напрямую к нему. Это вопервых.
    Во вторых — странный какой-то метод отправки письма для 3-х получателей… через запятую, как по мне, проще и понятнее.

    Camarade
    Я ведь написал выше

    Попробуйте в другом — любом файле, то же самое. Двойной вызов.

    Сами пробовали?

    через запятую, как по мне, проще и понятнее.

    Что через запятую проще и понятнее?
    Есть массив в котором будут данные юзеров. При проходе по массиву будет вызываться функция отправки мыла. Что странного?

    не понятно почему не использовать множественную отправку вписывая адресатов через запятую, как сказано в мануале функции mail();
    а придумывать что-то еще???
    сформируйте списки получателей до того как составить функцию mail();

    Camarade
    Вы внимательнее посмотрите на код указанный мной в посте.
    1. Я использую функцию WordPress wp_mail() а не чистую php функцию mail()
    2. Список получателей через запятую актуален если рассылается одно и тоже сообщение. У меня не одинаковое сообщение а персонализированное. Но в любом случае это не имеет значения т.к. на дублирование вызова функции в WordPrss это не влияет.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    Воспроизвелось, смотрю.

    Модератор Sergey Biryukov

    (@sergeybiryukov)

    Live and Learn

    На чистом дистрибутиве с исходной темой высылаются только три письма. Функция срабатывает дважды, когда сам движок загружается дважды (например, при использовании плагинов с AJAX-функциями). Как вариант, можно высылать не чаще определённого промежутка времени или попробовать отличать «чистый» запуск от запросов AJAX, RSS и т.п.

    Спасибо Сергей.
    Но я тестировал на новом ВП 3.0.2 и дефолтной чистой теме. Просто добавил вниз код который выше. Писем 6.
    Вы уверены что у вас отсылаются 3 письма? Важен не вывод на экран а количество писем. На экран выводится результат 3.
    Я тестировал локально на Денвере и на хостинге, с 2х компов и 3х браузеров, одинаковый результат.

    например, при использовании плагинов с AJAX-функциями

    …или при наличии отсутствия файлов, например /vaficon.ico, и включенном ЧПУ…

    Спасибо всем.
    Нашел причину двойного вызова:

    get_the_post_thumbnail($post->ID,array(120,120));

    Странно, почему так?

Просмотр 15 ответов — с 1 по 15 (всего 25)
  • Тема «Двойной вызов функции» закрыта для новых ответов.