Получаем 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.