Intereting Posts
Фильтр get_adjacent_post () для частных сообщений, как изменить JOIN / WHERE? Разделение цикла на стиль сообщения по-разному Простой вопрос о тегах и категориях Неустранимая ошибка: вызов неопределенной функции register_new_user () Можно ли удалять поля YOAST SEO из пользовательского типа сообщений Как ограничить автор доступом только к одному настраиваемому типу сообщений? Как удалить и отключить доступ к странице общих настроек, включая ее ссылку WordPress – обновлять все существующие сообщения одновременно Функция (the_terms) внутри таблицы HTML Не удалось получить доступ к пользовательскому плагину Удаление значка миниатюр продукта без остановки изображений вариаций Отображать поля пользовательских полей сообщений Как внести вклад в WordPress Core с использованием Tortoise SVN? Возможно ли получить get_terms автором? Как подключить пользовательские таксономии к пользовательским типам сообщений и заставить постоянные ссылки работать?

Отправить контактную форму на конкретный адрес-адрес электронной почты adres

Моя цель – иметь форму, которая может быть отправлена ​​по разным адресам электронной почты, в зависимости от реферера.

Например: если кто-то поделится этой ссылкой: www.example.com/form/referrer1 Форма должна быть отправлена ​​по электронной почте: referrer1@example.com. Но если кто-то еще поделится ссылкой www.example.com/form/referrer2 Форма должна быть отправлена ​​по электронной почте referrer2@example.com

Это можно сделать, используя только одну форму. Вместо новой формы для каждого пользователя. Если да, то как? Это можно сделать с помощью грозного плагина, который я использую в настоящее время.

Надеюсь, кто-то может помочь. Заранее спасибо.

Solutions Collecting From Web of "Отправить контактную форму на конкретный адрес-адрес электронной почты adres"

Я думаю, это может быть достигнуто.

Моя первая мысль заключалась в том, чтобы использовать конечные точки и модифицировать электронную почту получателя на основе строки запроса. Но, глядя на грозные крючки, единственное, что я считаю подходящим для этого, – фильтр frm_to_email . который применяется сразу после отправки (где наша строка запроса больше недоступна).

Но мы все еще можем обойти эту проблему, используя переменную $_POST и это ключ _wp_http_referer .

Нам все равно нужно добавить конечную точку в WP, если бы мы не получили 404 ошибки, потому что WP не знал, что делать с динамическим URL.

Предполагая следующее,

  • Ваша форма находится на странице с именем form
  • Мы будем использовать референт конечной точки для идентификации входящего запроса, чтобы у нас был относительный URL-адрес, похожий на / form / referer / bob , где bob является переменной частью входящего URL-адреса

поэтому сначала добавим нашу конечную точку

 add_action( 'init', 'wpse_235869_add_endpoint'); function wpse_235869_add_endpoint() { add_rewrite_endpoint( 'referer', EP_PAGES ); // EP_PAGES is mask telling to listen for the referer endpoint on all PAGES } 

это добавило конечную точку, которая переводила бы в строку запроса, например / form? referer = bob

Затем нам нужно сказать WP, чтобы прослушать наш новый запрос строки запроса

 add_filter( 'query_vars', 'wpse_235869_add_queryvars' ); function wpse_235869_add_queryvars( $query_vars ) { $query_vars[] = 'referer'; return $query_vars; } 

Как только это будет сделано, мы можем перейти к написанию нашего грозного фильтра формы .

При отправке формы переменная $_POST создается с помощью нашего ключа _wp_http_referer , который в этом примере будет [_wp_http_referer] => /form/referer/bob/

поэтому наш грозный фильтр будет выглядеть примерно так

 add_filter('frm_to_email', 'custom_set_email_value', 10, 4); function custom_set_email_value($recipients, $values, $form_id, $args){ if( isset($_POST['_wp_http_referer']) ) { preg_match( '#/form/referer/#', $_POST['_wp_http_referer'], $matches ); // check for our endpoint pattern so we don't try to modify recipients on regular forms. if ( $matches[0] != '/form/referer/') // If the _wp_http_referer does not match our endpoint, bail out. return $recipients; $referer = explode( '/form/referer', $_POST['_wp_http_referer'] )[1]; // get our recipient from the referer. $recipient = str_replace( '/', '' , $referer ); // remove forward slashes from $rerefer so we can use in email address. $recipients[0] = $recipient . '@example.com'; // rebuild our recipients array before sending. This, in our example, would be bob@example.com } return $recipients; }