Cum să obții URL-ul curent în Contact Form 7

22 ian. 2018, 21:52:23
Vizualizări: 66K
Voturi: 6

Folosesc Contact Form 7 în instalarea mea WordPress. Am nevoie să transmit cumva un câmp ascuns cu URL-ul paginii curente într-un câmp ascuns al formularului de contact. Am încercat funcția lor personalizată și am încercat shortcode-ul, dar fără succes.

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

function wpcf7_sourceurl_shortcode_handler($tag) {
    // Dacă tag-ul nu este array, returnează gol
    if (!is_array($tag)) return '';

    $name = $tag['name'];
    // Dacă numele este gol, returnează gol
    if (empty($name)) return '';

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

În editarea formularului am încercat [sourceurl thesource]

0
Toate răspunsurile la întrebare 4
1

Vedeți acest exemplu despre cum să creați și să parsați shortcode-ul în Contact Form 7. Pentru a-l utiliza, adăugați [current_url]

add_action( 'wpcf7_init', 'wpcf7_add_form_tag_current_url' );
function wpcf7_add_form_tag_current_url() {
    // Adăugăm shortcode pentru formular [current_url]
    wpcf7_add_form_tag( 'current_url',
        'wpcf7_current_url_form_tag_handler',
        array(
            'name-attr' => true
        )
    );
}

// Parsăm shortcode-ul în frontend
function wpcf7_current_url_form_tag_handler( $tag ) {
    global $wp;
    $url = home_url( $wp->request );
    return '<input type="hidden" name="'.$tag['name'].'" value="'.$url.'" />';
}

De asemenea, dacă doriți doar să obțineți URL-ul în e-mail, nu aveți nevoie de toate acestea. Există un tag special pentru e-mail [_url] Tag-uri speciale pentru e-mail în CF7

22 ian. 2018 23:18:57
Comentarii

Funcționează pentru mine dacă înlocuiesc $tag['name'] cu $tag['type']:

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

userlond userlond
25 mar. 2022 09:53:47
1

conform documentației Contact Form 7, aveți nevoie de acest lucru:

[_url] — Acest tag este înlocuit cu URL-ul paginii în care este plasat formularul de contact.

referință: https://contactform7.com/special-mail-tags/

2 iun. 2021 16:53:07
Comentarii

+1 pentru bunul simț de a citi documentația :)

Robert Went Robert Went
8 iul. 2021 15:57:13
0

Puteți utiliza shortcode-uri pentru câmpuri ascunse în CF7 + parametri GET: https://contactform7.com/hidden-field/ https://contactform7.com/getting-default-values-from-the-context/

În formularul de mail folosesc astfel de shortcode-uri pentru a obține aceste slug-uri:

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

Funcționează și cu plugin-ul Flamingo. Iar pentru șablonul de mail [_url] funcționează excelent.

27 sept. 2018 00:55:01
0

formularul trimis deja include postul container, apoi trebuie doar să-l preluăm și să-l includem în e-mail.
Pentru aceasta, încercați acest cod:

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;

});

Și în editarea e-mailului trimis, preluați URL-ul cu [containerURL]

22 ian. 2018 22:52:19