Как добавить скрытое поле в cf7?

Ссылка скопирована
PHP
1 ответ

Есть определенные страницы с разными заголовками выведенных с acf
На страницах присутствует форма одна и та же
Хочу в скрытое поле передавать заголовок, но как это сделать не пойму

нужно в скрытое поле вывести php

<input type="hidden" value="<?= get_field("title"); ?>"/>

<input type="hidden" value="<?= get_field("title"); ?>"/>

Как такое вставить правильно в cf7 ?

Дополнительно

За такой синтаксис нужно руки отрывать. Срочно учить матчать. А правильное решение на неправильный вопрос есть в документации

Сергей @paper_castle Фрилансер Добавить код в functions.php, потом использовать добавленный шорткод в форме

add_action( 'wpcf7_init', 'yoursite_cf7_new_shortcode',20 ); function yoursite_cf7_new_shortcode() {     wpcf7_add_shortcode( 'yourshortcode', 'your_site_cf7_new_shortcode_handler' ); }  function your_site_cf7_new_shortcode_handler( $tag ) { 	return '<input type="hidden" value="'. esc_attr(get_field("title")) .  '"/>'; }

add_action( 'wpcf7_init', 'yoursite_cf7_new_shortcode',20 ); function yoursite_cf7_new_shortcode() { wpcf7_add_shortcode( 'yourshortcode', 'your_site_cf7_new_shortcode_handler' ); } function your_site_cf7_new_shortcode_handler( $tag ) { return '<input type="hidden" value="'. esc_attr(get_field("title")) . '"/>'; }

Ответы:

Посмотреть в документации cf7 как добавить шорткод поля, в логике обработки шорткода получить значение и добавить его в value, добавить шорткод этого поля в редактор формы.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

В редактор Contact Form 7 PHP-код вставлять не нужно и нельзя: форма хранится как текст, поэтому конструкция с get_field внутри value либо выведется как текст, либо сломает разметку. Правильный путь такой: в форме ставится специальный тег поля, а значение берётся на сервере в момент вывода формы. Если заголовок хранится в ACF-поле title на текущей странице, сделайте отдельный form tag CF7 и выводите обычный hidden input с экранированным значением.

add_action('wpcf7_init', function () {
    wpcf7_add_form_tag('acf_hidden_title', 'site_cf7_acf_hidden_title', array('name-attr' => true));
});
 
function site_cf7_acf_hidden_title($tag) {
    $tag = new WPCF7_FormTag($tag);
 
    if (empty($tag->name)) {
        return '';
    }
 
    $post_id = get_queried_object_id();
    $value = '';
 
    if ($post_id && function_exists('get_field')) {
        $value = (string) get_field('title', $post_id);
    }
 
    if ($value === '' && $post_id) {
        $value = get_the_title($post_id);
    }
 
    return sprintf(
        '<input type="hidden" name="%s" value="%s">',
        esc_attr($tag->name),
        esc_attr($value)
    );
}

add_action('wpcf7_init', function () { wpcf7_add_form_tag('acf_hidden_title', 'site_cf7_acf_hidden_title', array('name-attr' => true)); }); function site_cf7_acf_hidden_title($tag) { $tag = new WPCF7_FormTag($tag); if (empty($tag->name)) { return ''; } $post_id = get_queried_object_id(); $value = ''; if ($post_id && function_exists('get_field')) { $value = (string) get_field('title', $post_id); } if ($value === '' && $post_id) { $value = get_the_title($post_id); } return sprintf( '<input type="hidden" name="%s" value="%s">', esc_attr($tag->name), esc_attr($value) ); }

Код лучше положить в functions.php дочерней темы или в небольшой mu-plugin, если поле должно работать независимо от темы. После этого в редакторе Contact Form 7 добавьте тег:

[acf_hidden_title page_title]

[acf_hidden_title page_title]

В письме CF7 значение можно использовать как обычный mail-tag: [page_title]. Имя page_title здесь важно: это name скрытого input, и именно по нему Contact Form 7 получит отправленное значение. Если ACF-поле title пустое, пример выше подставит стандартный заголовок текущей страницы через get_the_title. Если нужно брать другое поле, замените title в get_field на имя вашего ACF-поля.

  • Не используйте wpcf7_add_shortcode в новом коде: для Contact Form 7 актуальнее wpcf7_add_form_tag.
  • Не вставляйте сырой HTML без esc_attr, потому что значение ACF может содержать кавычки или спецсимволы.
  • Не полагайтесь на hidden field как на защищённые данные: пользователь может изменить его в браузере. Для критичных значений лучше заново определять страницу на сервере при обработке письма.

Если нужно просто передать URL или стандартный заголовок страницы, можно сделать похожий тег без ACF. Но для вашего случая с разными заголовками из ACF рабочая схема именно такая: CF7 отвечает за поле, PHP-функция отвечает за получение и безопасную подстановку значения.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

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

Вам также может быть интересно