Как добавить название страницы в тело письма ContactForm7

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5
Загрузка...

Довольно часто мне требуется в форму плагина ContactForm 7 движка WordPress подставить название страницы или записи в форму заказа. При этом её название должно отправляться на почту,а сама поле не отображаться в форме.  Вместо названия страницы можно подставлять и другие данные. Сделать это довольно просто если знать о «Хуках» у данного плагина.

И так нам достаточно создать текстовое поле с id «page_name», и значением «{page_name}. С помощью css скрыть данное поле, а у же в файле function.php прописать нужный код.

Создаем поле

Заходим на страницу плагина Contact Form 7 и нажимаем кнопку Добавить запись. Нажимаем кнопку «text», и в открывшемся окне забиваем данные как на картинке.

Чтобы в теле сообщения приходило название страницы с которой отправлена форма, переходим на вкладку «Письмо», и в «Тело письма» добавляем идентификатор текстового поля, в данном случае [text-204]

Добавляем код в function.php вашей темы:

add_filter( 'wpcf7_form_elements', 'wpcf7_form_replace', 10, 4 );

function wpcf7_form_replace($con){
   global $post;

   return str_replace('{page_name}',$post->post_title,$con);

}

Скрываем поле с помощью Jquery

<?php
add_action("wp_footer",'wpcf7_form_replace_js');

function wpcf7_form_replace_js(){
?>
  <script type="text/javascript">
    jQuery(document).ready(function($){
    
      $('#page_name').css('display':'none');
      
    });
  </script>
<?php
}

 

Так же можно создать отдельный плагин, и разместить код в файле wp-plugins/content/wpcf7_add_page_name/wpcf7_add_page_name.php

 

<?php
/*
Plugin Name: wpcf7_add_page_name
Author: Alexey
Version: 1.0
Plugin Uri: Ivacms.ru
*/

add_filter( 'wpcf7_form_elements', 'wpcf7_form_replace', 10, 4 );

  function wpcf7_form_replace($con){

    global $post;

    return str_replace('{page_name}',$post->post_title,$con);

  }
  
add_action("wp_footer",'wpcf7_form_replace_js');

function wpcf7_form_replace_js(){
?>
  <script type="text/javascript">
    jQuery(document).ready(function($){
    
      $('#page_name').css('display':'none');
      
    });
  </script>
<?php
}

Если всё сделано правильно, то на почту придёт письмо с названием страницы.

Второй вариант.

Это способ значительно проще и не требует создание дополнительной формы. У Contact Form существует хук wpcf7_before_send_mail, который позволяет изменять тело письма и другие параметры.

<?php
add_filter( 'wpcf7_before_send_mail', 'wpcf7_send_page_name' );

  function wpcf7_send_page_name($con){
    global $post;
    
    //переменная body содержит тело письма, поэтому мы допишем в него название текущей страницы
    
    $con['body'].=$post->post_title;
  }

Третий вариант (Самый простой)

Разработчик плагина CF7 позаботился о пользователях и программистах, которым требуется вместе с телом письма отправлять текущее название страницы на email.

Для этой задачи существует аббревиатура [_post_title], которую нужно добавить в настройки письма текущей формы в админ.панели. Такой способ был сделан на сайте «Смолникова».

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*
*