Домой Wp-Recall WP-Recall: Вопросы и ответы После регистрации выслать данные на почту менеджера
11ответ(ов) в теме
SergeyNet
не в сети 3 года
На сайте с 18.08.2020
Участник
Тем 23
Сообщения 70
1
01:53
Версия WP-Recall: 16.24.18

Здравствуйте!
Знаю, звучит это все глупо, ибо я уже подымал этот вопрос на форуме и вроде нашли решение да не полностью...
Задача такова - после того как пользователь заполнил все поля формы регистрации (в ней не только стандартные поля логин и пароль а еще и дополнительные есть) все эти данные нужно отправить на нужный email (а в будущем мне нужно будет сделать так чтоб они отправлялись в CRM-ку).

То что я опишу ниже я пишу не с целью кого-то обвинить, а с целью показать что я сделал все что мог и уже от безысходности прошу подсказки

По началу я долго пытался сделать это через код php в function.php . Пол дня мучался и не получилось... Тогда Андрей посоветовал следующий код:

 add_action('user_register', 'rcl_send_user_data_to_mail', 10);
function rcl_send_user_data_to_mail($user_id){

	$admin_email = 'почта@админа.ru'; // укажите почту админа
	$subject = 'Данные нового пользователя'; // заголовок письма
	$textmail = '<p>На вашем сайте новый юзер. его ID = '.$user_id.'</p>'; 
	$textmail .= '<p>Данные указанные при регистрации</p>'; 
	foreach($REQUEST as $k => $val){
		$textmail .= '<p>'.$k.' => '.$val.'</p>'; 
	}
	rcl_mail($admin_email, $subject, $textmail);
}

Этот код отправлял данные, но только ID пользователя.

Я нашел как это сделать через доработку файла register.php - сделал так чтоб все поля отсылались в письме пользователю и потом просто указывал чтоб такое же письмо отправлялось менеджеру. Система работала, но потом оказалось что этот файл не "template" и он затирается:)

Потом я решил попробовать реализовать это через добавление кода в файл form-register.php , что я только не пробовал... я перечитал кучу статей и вп-камы и блога вп-риколл и блога вордпресса, вот ниже код некоторых из моих последних попыток:

$all_meta_for_user = get_user_meta( $user_id );
global $user_ID;
$user_log = $all_meta_for_user['last_name'];
$user_logs = $all_meta_for_user[1];
$user_email = get_user_meta( $user_id, 'first_name', true);
$password = get_user_meta($user_id, $key = 'last_name', $single = false);
$admin_email = 'maestro300107@gmail.com';     
$to  = 'maestro300107@gmail.com' . ', ';
$subject = 'Письмо с моего сайта';
$message = $_POST['last_name'] . '<br />' . $_POST['last_name'] . '<br />' . $password . $user_log . 'hello' . '<br />' . $_POST['user_login'];		
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";	
$textmail = '<p>На вашем сайте новый юзер. его ID = '.$_POST['last_name']. $user_log. $user_email. 'hello'. $password . $user_logs.'</p>';  

mail($to, $subject, $message, $headers);			
 rcl_mail($admin_email, $subject, $textmail);

то есть в этом хаотичном коде я пытался найти способ - КАК ЖЕ ПЕРЕДАТЬ и отправить через email данные введенные пользователем.
Ничего не получилось... email отправлялся но данные не передавались. я никак не могу понять КАК ЖЕ ИСПОЛЬЗОВАТЬ ЭТОТ meta-key? чтоб по email отправить введенные пользователем в него данные... я пробовал и get_user_meta() и прочее...

Хух!

Если кто-то подскажет что я делал не правильно и где же правильный ответ то я буду безмерно благодарен!

0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
2
11:48

в моем коде ошибка, надо привести эту часть к виду

foreach($_REQUEST as $k => $val){
$textmail .= $k . ' => ' . $val;
}

тогда кроме ИД пользователя будут высылаться все данные введенные в регистрационную форму, правда без человеческих наименований полей, но можно походу доработать.

0
SergeyNet
не в сети 3 года
На сайте с 18.08.2020
Участник
Тем 23
Сообщения 70
3
13:01

Андрей CS сказал(а)
в моем коде ошибка, надо привести эту часть к виду

foreach($_REQUEST as $k => $val){
$textmail .= $k . ' => ' . $val;
}

тогда кроме ИД пользователя будут высылаться все данные введенные в регистрационную форму, правда без человеческих наименований полей, но можно походу доработать.

Спасибо Андрей:)!!!!
Да, все работает, на этот раз полностью:)
Я вот так реализовал чтоб оно красиво выглядело:

  add_action('user_register', 'rcl_send_user_data_to_mail', 10);
function rcl_send_user_data_to_mail($user_id){

	$admin_email = 'maestro300107@gmail.com'; // укажите почту админа
	$subject = 'Данные нового пользователя'; // заголовок письма 
foreach($_REQUEST as $k => $val){

$last_name = $_POST['last_name'];
$new_tabs_r_57 = $_POST['new_tabs_r_57'];
$user_email = $_POST['user_email'];
$user_login = $_POST['user_login'];
	
$textmail = '<p>На сайте зарегистрировался новый пользователь! Данные указанные при регистрации: </p>'; 
$textmail .= '<p>Логин = '.$user_login.'</p>'; 
$textmail .= '<p>Email = '.$user_email.'</p>'; 
$textmail .= '<p>Номер телефона = '.$last_name.'</p>'; 
$textmail .= '<p>День рождения = '.$new_tabs_r_57.'</p>';
}
	rcl_mail($admin_email, $subject, $textmail);
}

Я так понял что вся магия была в - $_REQUEST , Ассоциативный массив (array), который по умолчанию содержит данные переменных $_GET, $_POST и $_COOKIE .

Но вот не совсем понял что делает вот этот код 'as $k => $val'
Да уж... я твердо понял что нужно учить php:) Может посоветуете хорошие источники или бесплатные курсы? Разных курсов и программ по изучению php в интернете огромная туча, но вот какие из них хорошие я не знаю.

0
Вова (Otshelnik-Fm)
не в сети 6 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
4
13:55

SergeyNet сказал(а)
Но вот не совсем понял что делает вот этот код 'as $k => $val'

SergeyNet сказал(а)
Может посоветуете хорошие источники или бесплатные курсы?

доки же

Вы не можете просматривать опубликованные ссылки
0
SergeyNet
не в сети 3 года
На сайте с 18.08.2020
Участник
Тем 23
Сообщения 70
5
15:17

Владимир (Otshelnik-Fm) сказал(а)

SergeyNet сказал(а)
Но вот не совсем понял что делает вот этот код 'as $k => $val'

SergeyNet сказал(а)
Может посоветуете хорошие источники или бесплатные курсы?

доки же

Вы не можете просматривать опубликованные ссылки

Спасибо Владимир! да действительно все понятно описано.

Это уже не тема топика, а просто личный вопрос - есть два мнения по поводу того как лучше изучать php:
1) Нужно изучить некую "базу-основу" php а уже потом браться за реализацию разных задач по php.
2) Лучшее изучение это практика и нужно сразу брать и стараться делать.
Вы какого из них придерживаетесь? Или может у вас есть третье?

Я раньше думал что лучше 2) вариант. Но! то как я несколько дней "мудохался" над элементарной задачей и так и не смог ее сам решить - это показывает что есть доля истины и в варианте 1)

0
Вова (Otshelnik-Fm)
не в сети 6 часов
На сайте с 27.01.2013
Участник
Тем 43
Сообщения 18647
6
15:56

Базу - да. Ты должен понимать 100% - что такое массивы и объекты, синтаксис (банально в скобках можно запутаться по первости), условия, циклы, конкатенация - это база. Если есть - то всё остальное уже не так страшно.

А потом я за вариант когда тебе надо в вордпресс что-то сделать и ты параллельно учишь php и апи вордпресс. Ну и js с mysql - куда уж без них.

Ну и важно знать терминологию - т.к. поиск гугла любит точные фразы. И умение гуглить на английском. Только на нём. А там открываешь 3 темы на стековерфлоу и из 3х кусков кода делаешь свой.

Я через это прошел (ох я говнокодил - у меня есть файл функций 2009-го года - я его оставил на память. Вот там жжесть...). Не сказать что я гуру php - но решать быстро вопросы умею. Хотя перфекто в итоге меня замедляет. Это касается всего фронтенда.
Ну а потом еще подключаешь в IDE форматирование, кодстайл - чтобы если кто заглянет внутрь - ужас бы от прыгающих скобок не испытал. Подключаешь гит. Ну а взрослое: ООП - это по вкусу. Не всегда классы нужны в реализации простой задачи. Хотя очень часто класс помогает не делать кучу запросов к бд и не костылять обходя это через глобальные переменные. Если пошел выборку из БД писать в глобальные - пора перенести это в класс. Такая дичь тоже была. Потом лень по изучению ООП прогнал и подружился))

Мне например оказалось неинтересно делать мифические вещи по учебнику на чистом php. Да читал - повторял, но не 100%. Это путь для академиков))

Ну отдельно конечно ты должен уметь дебажить. Сверху вниз, построчно. Проверяя каждый шаг. Уметь дебажить ajax - т.к. с ним в ВП часто много работы.

2
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
7
16:53

для начала достаточно найти видеоуроки по php с нуля и остановиться на классах, тк сходу усвоить тяжело и можно что то писать уже осознанное

2
garry
не в сети 13 часов
На сайте с 04.01.2014
Участник
Тем 146
Сообщения 2925
8
17:04

Оффтоп
Андрей с Владимиром все правильно говорят, но если Меркурий ретроградный, а Венера в Рыбах, лучше код не писать в этот день. 😉

Редакции сообщения
14.10.2020 17:05garryПричина: не указано
0
Андрей CS
не в сети 9 часов
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16855
9
17:12

приведите код свой к такому виду

add_action('user_register', 'rcl_send_user_data_to_mail', 10);
function rcl_send_user_data_to_mail($user_id){

	$admin_email = 'maestro300107@gmail.com'; // укажите почту админа
	$subject = 'Данные нового пользователя'; // заголовок письма 

	$last_name = $_POST['last_name'];
	$new_tabs_r_57 = $_POST['new_tabs_r_57'];
	$user_email = $_POST['user_email'];
	$user_login = $_POST['user_login'];
		
	$textmail = '<p>На сайте зарегистрировался новый пользователь! Данные указанные при регистрации: </p>'; 
	$textmail .= '<p>Логин = '.$user_login.'</p>'; 
	$textmail .= '<p>Email = '.$user_email.'</p>'; 
	$textmail .= '<p>Номер телефона = '.$last_name.'</p>'; 
	$textmail .= '<p>День рождения = '.$new_tabs_r_57.'</p>';

	rcl_mail($admin_email, $subject, $textmail);
}

а то у вас содержимое письма в цикле формируется, что совсем не требуется.

1
SergeyNet
не в сети 3 года
На сайте с 18.08.2020
Участник
Тем 23
Сообщения 70
10
23:35

Андрей CS сказал(а)
приведите код свой к такому виду

add_action('user_register', 'rcl_send_user_data_to_mail', 10);
function rcl_send_user_data_to_mail($user_id){

	$admin_email = 'maestro300107@gmail.com'; // укажите почту админа
	$subject = 'Данные нового пользователя'; // заголовок письма 

	$last_name = $_POST['last_name'];
	$new_tabs_r_57 = $_POST['new_tabs_r_57'];
	$user_email = $_POST['user_email'];
	$user_login = $_POST['user_login'];
		
	$textmail = 'На сайте зарегистрировался новый пользователь! Данные указанные при регистрации: 
'; 
	$textmail .= 'Логин = '.$user_login.'
'; 
	$textmail .= 'Email = '.$user_email.'
'; 
	$textmail .= 'Номер телефона = '.$last_name.'
'; 
	$textmail .= 'День рождения = '.$new_tabs_r_57.'
';

	rcl_mail($admin_email, $subject, $textmail);
}

а то у вас содержимое письма в цикле формируется, что совсем не требуется.

Да, вы правы! Работает и без foreach($_REQUEST as $k => $val). Аж немного обидно:) Можно было бы и самому до этого додуматься. Короче точно, начинаю изучать php:)

0
SergeyNet
не в сети 3 года
На сайте с 18.08.2020
Участник
Тем 23
Сообщения 70
11
23:40

Владимир (Otshelnik-Fm) сказал(а)
Базу - да. Ты должен понимать 100% - что такое массивы и объекты, синтаксис (банально в скобках можно запутаться по первости), условия, циклы, конкатенация - это база. Если есть - то всё остальное уже не так страшно.

А потом я за вариант когда тебе надо в вордпресс что-то сделать и ты параллельно учишь php и апи вордпресс. Ну и js с mysql - куда уж без них.

Ну и важно знать терминологию - т.к. поиск гугла любит точные фразы. И умение гуглить на английском. Только на нём. А там открываешь 3 темы на стековерфлоу и из 3х кусков кода делаешь свой.

Я через это прошел (ох я говнокодил - у меня есть файл функций 2009-го года - я его оставил на память. Вот там жжесть...). Не сказать что я гуру php - но решать быстро вопросы умею. Хотя перфекто в итоге меня замедляет. Это касается всего фронтенда.
Ну а потом еще подключаешь в IDE форматирование, кодстайл - чтобы если кто заглянет внутрь - ужас бы от прыгающих скобок не испытал. Подключаешь гит. Ну а взрослое: ООП - это по вкусу. Не всегда классы нужны в реализации простой задачи. Хотя очень часто класс помогает не делать кучу запросов к бд и не костылять обходя это через глобальные переменные. Если пошел выборку из БД писать в глобальные - пора перенести это в класс. Такая дичь тоже была. Потом лень по изучению ООП прогнал и подружился))

Мне например оказалось неинтересно делать мифические вещи по учебнику на чистом php. Да читал - повторял, но не 100%. Это путь для академиков))

Ну отдельно конечно ты должен уметь дебажить. Сверху вниз, построчно. Проверяя каждый шаг. Уметь дебажить ajax - т.к. с ним в ВП часто много работы.

Спасибо Владимир! Я люблю когда есть конкретные цели. Из вашего совета я понял что по теории мне нужно хорошо изучить такие темы:
- Массивы
- Объекты
- Условия
- Циклы
- Конкатенация
- Синтаксис

Ну и наверное тему функции тоже нужно изучить. Вот и чудненько! Чудненько что общекосмическая фраза "изучить php" обретает для меня конкретный вид.

1
Вы не имеете права на публикацию сообщений в этой теме