Как узнать ID страницы, с которой отправляется форма Contact Form 7?

Как можно получить ID страницы, на которой расположена форма Contact Form 7, в момент отправки события wpcf7_mail_sent? Я пробовал использовать следующие методы, но они возвращают пустое значение: <br/> <br/> get_the_ID(), $post->ID, get_queried_object();
  • 11 сентября 2024 г. 17:43
Ответы на вопрос 2
Чтобы получить ID страницы, с которой была отправлена форма Contact Form 7 в момент события `wpcf7_mail_sent`, вы можете использовать объект `$submission`, который содержит информацию о отправленной форме, включая ID страницы.

Вот пример кода, который можно добавить в файл `functions.php` вашей темы или в плагин:

```php
add_action('wpcf7_mail_sent', 'my_custom_function');

function my_custom_function($contact_form) {
    // Получаем объект отправки
    $submission = WPCF7_Submission::get_instance();
    
    if ($submission) {
        // Получаем ID страницы
        $current_post_id = url_to_postid($submission->get_posted_data('_wpcf7'));

        // Либо можете просто использовать
        $current_post_id = get_post($submission->get_posted_data('_wpcf7_submitted')['_wpcf7']);

        // Пример использования ID страницы
        error_log('ID страницы: ' . $current_post_id);
    }
}
```

В этом коде:

- Мы используем хук `wpcf7_mail_sent` для вызова функции после отправки формы.
- Получаем доступ к данным отправки через `WPCF7_Submission::get_instance()`.
- Используем `url_to_postid()` для получения ID страницы на основе URL, в котором была отправлена форма.

Обратите внимание, что в некоторых случаях, для получения ID страницы, может понадобиться передать дополнительные параметры или использовать методы, специфичные для вашей установки. Убедитесь, что ваша версия плагина Contact Form 7 актуальна, так как в будущем API может изменяться.
Как получить id страницы (запись кастомного типа) с которой отправлена форма contact form 7?

Для этого есть тег [_post_id]
Похожие вопросы