Enviar formulário de contato para um endereço específico de referência-e-mail

Meu objective é ter um formulário que possa ser enviado para diferentes endereços de e-mail, dependendo do referente.

Por exemplo: se alguém compartilhe este link: www.example.com/form/referrer1 O formulário deve ser enviado por e-mail para: referrer1@example.com. Mas se alguém compartilhar o link www.example.com/form/referrer2 O formulário deve ser enviado por e-mail para referrer2@example.com

Isso pode ser feito usando apenas um formulário. Em vez de um novo formulário para cada usuário. Em caso afirmativo, como? Isso pode ser feito com o formidável plugin, que uso atualmente.

Espero que alguém possa ajudar. Agradeço antecipadamente.

Solutions Collecting From Web of "Enviar formulário de contato para um endereço específico de referência-e-mail"

Eu acho que isso pode ser alcançado.

Meu primeiro pensamento foi apenas usar pontos finais e modificar o email do destinatário com base na seqüência de consulta. Mas, olhando os ganchos formidáveis, o único que vejo adequado para isso é o filtro frm_to_email . que é aplicado logo após o envio (onde nossa cadeia de consulta não está mais disponível).

Mas ainda podemos resolver esse problema usando a variável $_POST e é a chave _wp_http_referer .

Nós ainda precisamos adicionar um ponto final ao WP, se não, obteríamos 404 erros porque o WP não saberia o que fazer com o URL dynamic.

Assumindo o seguinte,

  • Seu formulário está em uma forma chamada
  • Usaremos um referente do nó de extremidade para identificar a solicitação recebida para que possamos ter um URL relativo que pareça com / form / referer / bob , onde bob é a parte variável do URL recebido

então primeiro vamos adicionar nosso ponto final

 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 } 

isso adicionou um ponto final que se traduziria em uma seqüência de consulta como / form? referer = bob

Então precisamos dizer ao WP para ouvir nosso novo referente de string de consulta

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

Assim que isso for feito, podemos seguir em frente para escrever o nosso formidável filtro de formulário .

Após o envio do formulário, uma variável $_POST é criada com a nossa chave _wp_http_referer , que, neste exemplo, seria [_wp_http_referer] => /form/referer/bob/

então nosso formidável filtro seria algo assim

 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; }