Come ottenere l'URL corrente in Contact Form 7
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]
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

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/

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.

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]
