Как отправлять сообщения зарегистрированным пользователям на почту, через их профиль на сайте
Добрый день!
Подскажите, пожалуйста, как Вы организовали на этом сайте переписку пользователей через их публичные профили?
У зарегистрированных пользователей на странице их профилей есть форма "Написать пользователю на почту".
Как это сделано?
* вопрос отредактирован
Что именно вас интересует? Написал все с нуля, начиная с регистрации, заканчивая страницей профиля и рейтингом... Там много чего нужно доделать, все руки не доходят...
Например, как организовать переписку пользователей. Контактная форма у меня тоже своя (честно спёртая отсюда и немного подкорректированная), я уже пыталась её прикрутить к странице профиля, но у меня ничего не вышло. Что и как там нужно поменять, чтобы письмо уходило не админу, а тому пользователю чей профиль я так и не додумалась.
Не знаком с этой контактной формой.
Что касается переписки, наверное лучше поставить плагин, в репозитории такие имеются, я сталкивался со "front and pm" - так себе, но пользоваться можно...
А своей, которую используете в профиле пользователя, не поделитесь? Можно небесплатно. Или хотя бы скриптовой частью, можно даже только тем фрагментом, где формируется адрес пользователя, на который должно уйти письмо. Я бы не приставала, но уже замучалась искать это в интернете.
Так, я не понял, вам переписка внутри сайта нужна, или нужно просто возможность отправлять письмо пользователю с сайта?
Если второе, то там все просто очень: берете email пользователя см. comment_author_email() и отправляете на него письмо с помощью wp_mail()
Мне нужно как у Вас, чтобы в публичном профиле пользователя присутствовала контактная форма, воспользовавшись которой любой зарегистрированный пользователь мог отправить письмо на почту тому пользователю, на странице которого он находится. У Вас, по-моему, это может сделать любой желающий, но с ограничением этой возможности только для авторизованных пользователей я справлюсь. Если сюда, в комментарий, можно вставить изображение, то я могу сделать скриншот.
Вот функция, которую я написал для этой формы. Она самодостаточно, вызовите её передав ей данные пользователя, которые можно получить через get_userdata()
// вызов echo user_feedback_form( get_userdata(5) ); ## форма обратной связи function user_feedback_form( $userdata ){ global $current_user; $feedback_email = is_email($_POST['feedback_email']) ? $_POST['feedback_email'] : false; ob_start(); $errors = array(); $out = ''; // обработвка запроса if( isset($_POST['user_feedback_form']) ){ // проверяем поля foreach( $_POST as $key => $val ){ if( ! $val ) $errors[ $key ] = 'error'; } if( ! $feedback_email ) $errors['feedback_email'] = 'error'; // если нет ошибок отправляем письмо if( ! $errors ){ $message = $_POST['feedback_massage'] . "\n\n\n" . "---\n" . "П.С. Письмо отправленно с этой страницы: http://". $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; // удалим фильтры, которые могут изменить заголовок $headers //remove_all_filters( 'wp_mail_from' ); //remove_all_filters( 'wp_mail_from_name' ); $headers = "From: {$_POST['feedback_name']} [{$_SERVER['HTTP_HOST']}] <{$feedback_email}>\r\n"; $mail = wp_mail( $userdata->user_email, $_POST['feedback_title'], $message, $headers ); if( $mail ){ $out .= '<p class="c_box_green">Письмо отправленно!</p>'; unset( $_POST ); } else $out .= '<p class="c_box_red">По неизвестной причине, письмо не было отправлено! Попробуйте отправить его позже.</p>'; } else $out .= '<p class="c_box_red">Письмо не отправленно. Заполните отмеченные поля!</p>'; } // форма $out .= '<form method="POST" action="">'; if( $current_user->user_email && $current_user->display_name ){ $out .= ' <input type="hidden" name="feedback_email" value="'. esc_attr( $current_user->user_email ) .'"> <input type="hidden" name="feedback_name" value="'. esc_attr( $current_user->display_name ) .'"> '; } else { $out .= ' <p><label for="feedback_email">Ваша почта:</label> <input type="text" id="feedback_email" class="'. $errors['feedback_email'] .'" name="feedback_email" value="'. esc_attr( $_POST['feedback_email'] ) .'"></p> <p><label for="feedback_name">Ваше имя:</label> <input type="text" id="feedback_name" class="'. $errors['feedback_name'] .'" name="feedback_name" value="'. esc_attr( $_POST['feedback_name'] ) .'"></p> '; } $out .= ' <p><label for="feedback_title">Заголовок письма:</label> <input style="width:100%;" type="text" class="'. $errors['feedback_title'] .'" name="feedback_title" id="feedback_title" value="'. esc_attr( $_POST['feedback_title'] ) .'"></p> <p><label for="feedback_massage">Текст письма:</label><br> <textarea style="width:100%; height:200px;" id="feedback_massage" class="'. $errors['feedback_massage'] .'" name="feedback_massage">'. esc_textarea($_POST['feedback_massage']) .'</textarea></p> <input type="submit" name="user_feedback_form" class="button-primary" value="Отправить письмо"> '; $out .= '</form>'; return $out; }Большущее спасибо. Попытаюсь осуществить затею. Если что - вернусь с вопросами, буду пользоваться Вашей добротой.