Получаем ID страницы, с которой отправлена форма

Вариант 1

Если надо отправить ID страницы в письме, то просто используем специальный тег [_post_id].

Если же надо получить ID страницы в коде для дальнейшей обработки, то можно сделать так.

Скопировано
add_action( 'wpcf7_before_send_mail', function() {
if( $data->id != '555' ) return; // выбираем нужную форму
$post_id = $_POST['_wpcf7_container_post'];
});
Показать код

В результате переменная $post_id будет хранить ID страницы с которой была отправлена форма.

В некоторых случаях этот код может не сработать и переменная $post_id будет равна нулю. Тогда не будет работать и специальный тег [_post_id]. Скорее всего это происходит из-за каких-то общих ошибок на сайте. В таком случае можно получить ID страницы иначе.

Вариант 2

В шаблоне формы в любое место вставляем примерно такой код:

Скопировано
<div style='display: none;'>
[text post_id "POST_ID"]
</div>
Показать код

а в файле функций используем фильтр wpcf7_form_elements:

Скопировано
add_filter( 'wpcf7_form_elements', function( $form ) {
$post_id = $post->ID;
$form = str_replace( 'POST_ID', $post_id, $form );
});
Показать код

И тогда в письме можно использовать тег [post_id]:

ID страницы откуда была отправлена форма: [post_id]

Этот вариант работает всегда в отличие от варианта 1.