Как получить текущий URL в Contact Form 7

22 янв. 2018 г., 21:52:23
Просмотры: 66K
Голосов: 6

Я использую Contact Form 7 в моей установке WordPress. Мне нужно каким-то образом передать скрытое поле с URL текущей страницы в скрытое поле контактной формы. Я пробовал их пользовательскую функцию и пытался использовать шорткод, но безуспешно.

wpcf7_add_shortcode('sourceurl', 'wpcf7_sourceurl_shortcode_handler', true);

function wpcf7_sourceurl_shortcode_handler($tag) {
    if (!is_array($tag)) return '';

    $name = $tag['name'];
    if (empty($name)) return '';

    $html = '<input type="hidden" name="' . $name . '" value="http://' . $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"] . '" />';
    return $html;
}

В редакторе формы я пробовал использовать [sourceurl thesource]

0
Все ответы на вопрос 4
1

Посмотрите этот пример того, как создать и обработать шорткод в Contact Form 7. Чтобы использовать его, добавьте [current_url]

add_action( 'wpcf7_init', 'wpcf7_add_form_tag_current_url' );
function wpcf7_add_form_tag_current_url() {
    // Добавляем шорткод для формы [current_url]
    wpcf7_add_form_tag( 'current_url',
        'wpcf7_current_url_form_tag_handler',
        array(
            'name-attr' => true
        )
    );
}

// Обрабатываем шорткод на фронтенде
function wpcf7_current_url_form_tag_handler( $tag ) {
    global $wp;
    $url = home_url( $wp->request );
    return '<input type="hidden" name="'.$tag['name'].'" value="'.$url.'" />';
}

Также, если вам нужно просто получить URL в письме, все это не требуется. Для этого есть специальный тег [_url] Специальные почтовые теги CF7

22 янв. 2018 г. 23:18:57
Комментарии

У меня сработало, если заменить $tag['name'] на $tag['type']:

return '<input type="hidden" name="'.$tag['type'].'" value="'.$url.'" />';

userlond userlond
25 мар. 2022 г. 09:53:47
1

Согласно документации Contact Form 7 вам понадобится следующее:

[_url] — Этот тег заменяется на URL страницы, в которой размещена контактная форма.

ссылка: https://contactform7.com/special-mail-tags/

2 июн. 2021 г. 16:53:07
Комментарии

+1 за здравый смысл и чтение документации :)

Robert Went Robert Went
8 июл. 2021 г. 15:57:13
0

Вы можете использовать шорткоды скрытых полей в CF7 + параметры GET: https://contactform7.com/hidden-field/ https://contactform7.com/getting-default-values-from-the-context/

В почтовой форме я использую такие шорткоды для получения этих слагов:

[hidden utm_source default:get]
[hidden utm_medium default:get]
[hidden utm_campaign default:get]
[hidden utm_content default:get]
[hidden gclid default:get]

Это также работает с их плагином Flamingo. И для почтового шаблона [_url] работает отлично.

27 сент. 2018 г. 00:55:01
0

Форма уже отправляет контейнерный пост, поэтому вам просто нужно получить его и поместить в электронное письмо.
Для этого попробуйте следующий код:

add_filter("wpcf7_posted_data", function ($wpcf7_posted_data) {

    $post = get_post($wpcf7_posted_data["_wpcf7_container_post"]);

    $wpcf7_posted_data["containerURL"] = get_permalink($post);


    return $wpcf7_posted_data;

});

При редактировании отправляемого письма вы можете получить URL с помощью [containerURL]

22 янв. 2018 г. 22:52:19