web-dev-qa-db-fra.com

Comment obtenir l'URL actuelle dans le formulaire de contact 7

J'utilise le formulaire de contact 7 dans mon installation wordpress. Je dois en quelque sorte passer un champ masqué avec l'URL de la page actuelle dans le champ masqué du formulaire de contact. J'ai essayé leur fonction personnalisée et le code abrégé, pas de chance.

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

Dans l'édition du formulaire, j'ai essayé [sourceurl thesource]

2
unixmiah

le formulaire d'envoi envoie déjà le courrier du conteneur, il vous suffit de le récupérer et de le mettre dans l'e-mail.
Pour cela, essayez ce code:

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;

});

Et dans l'édition de l'e-mail envoyé, vous récupérez l'URL avec [containerURL]

1
mmm

Voir cet exemple sur la façon de créer et d’analyser le shortcode dans le formulaire de contact 7 pour l’utiliser add [current_url]

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

// Parse the shortcode in the 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 plus, si tout est sur le point d'obtenir l'URL dans l'e-mail, vous n'avez pas besoin de tout cela. il existe une étiquette spéciale pour l'e-mail [_url]- Étiquettes de courrier CF7 spéciales

1
Shibi

Vous pouvez utiliser les codes courts de champ caché cf7 + obtenir les paramètres: https://contactform7.com/hidden-field/https://contactform7.com/getting-default-values-from-the-context/

Dans le formulaire de courrier, j'utilise ces codes abrégés pour obtenir ces slugs

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

Cela fonctionne aussi avec leur plugin flamingo. Et pour le modèle de courrier [_url] fonctionne très bien.

0
Iggy