Come ottenere l'URL corrente in Contact Form 7

22 gen 2018, 21:52:23
Visualizzazioni: 66K
Voti: 6

Sto utilizzando Contact Form 7 nella mia installazione WordPress. Ho bisogno di passare in qualche modo un campo nascosto con l'URL della pagina corrente nel campo nascosto del modulo di contatto. Ho provato la loro funzione personalizzata e ho tentato con lo shortcode, senza successo.

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;
}

Nell'editor del modulo ho provato [sourceurl thesource]

0
Tutte le risposte alla domanda 4
1

Guarda questo esempio su come creare e analizzare lo shortcode in Contact Form 7 per utilizzarlo aggiungi [current_url]

add_action( 'wpcf7_init', 'wpcf7_add_form_tag_current_url' );
function wpcf7_add_form_tag_current_url() {
    // Aggiungi shortcode per il form [current_url]
    wpcf7_add_form_tag( 'current_url',
        'wpcf7_current_url_form_tag_handler',
        array(
            'name-attr' => true
        )
    );
}

// Analizza lo shortcode nel 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.'" />';
}

Inoltre, se si tratta solo di ottenere l'URL nell'email, non è necessario tutto questo. C'è un tag speciale per l'email [_url] Tag speciali per le email in CF7

22 gen 2018 23:18:57
Commenti

Per me funziona se sostituisco $tag['name'] con $tag['type']:

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

userlond userlond
25 mar 2022 09:53:47
1

secondo la documentazione di Contact Form 7 è necessario questo:

[_url] — Questo tag viene sostituito con l'URL della pagina in cui è posizionato il modulo di contatto.

riferimento: https://contactform7.com/special-mail-tags/

2 giu 2021 16:53:07
Commenti

+1 per il buon senso di leggere la documentazione :)

Robert Went Robert Went
8 lug 2021 15:57:13
0

Puoi utilizzare gli shortcode dei campi nascosti di cf7 + i parametri get: https://contactform7.com/hidden-field/ https://contactform7.com/getting-default-values-from-the-context/

Nel modulo mail utilizzo questi shortcode per ottenere gli slug

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

Funziona anche con il loro plugin Flamingo. E per il template mail [_url] funziona molto bene.

27 set 2018 00:55:01
0

il modulo di invio già invia il post del contenitore, quindi devi solo recuperarlo e inserirlo nell'e-mail.
Per fare ciò, prova questo codice:

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;

});

E nell'edizione dell'e-mail inviata, puoi recuperare l'URL con [containerURL]

22 gen 2018 22:52:19