web-dev-qa-db-fra.com

empêcher/bloquer l'accès direct à une page de remerciement

comment empêcher/bloquer l’accès direct à une page de remerciement, seul l’accès s’il est redirigé de soumettre un formulaire (dans une page différente)?

3
turcospeed

Si le formulaire redirige à partir d'une seule page, vous pouvez facilement utiliser wp_get_referer() pour le vérifier et, dans le cas contraire, rediriger.

add_action('template_redirect', function(){
    // ID of the thank you page
    if ( ! is_page(12345)) {
        return;
    }

    // coming from the form, so all is fine
    if (wp_get_referer() == 'URL_OF_FORM') {
        return;
    }

    // we are on thank you page
    // visitor is not coming from form
    // so redirect to home
    wp_redirect( get_home_url() );
    exit;
}
3
kero

Je ne sais pas pourquoi le code ci-dessus ne fonctionne pas pour moi. Cependant, le code ci-dessous a parfaitement fonctionné.

<?php
    function thank_you_rd(){
        if ( ! is_page('thank-you')) {
            return;
        }
        if (wp_get_referer() == '/contact-us/') {
            return;
        }
        wp_redirect( get_home_url() );
    }
    add_action('template_redirect', 'thank_you_rd');
?>
1