WordPress: URL страницы маски - PullRequest
0 голосов
/ 25 января 2019

У меня есть форма, которая перенаправляет и открывает страницу с благодарностью при отправке, но я бы не хотел, чтобы кто-либо имел доступ к этой странице по URL. Эта страница должна быть доступна из перенаправления формы. Проблема в том, что я пытался сделать это с .htaccess, но он не работает.

Текущий URL: mySite.com/thank-you

Я хотел бы замаскировать его как: mySite.com/

Я использовал этот код в function.php:

/**
 * Form ---> Thank you page
 *
 */
add_action( 'wp_footer', 'mycustom_wp_footer' );

function mycustom_wp_footer() {
    ?>
    <script type="text/javascript">
        document.addEventListener( 'wpcf7mailsent', function( event ) {
            if ( '6881' == event.detail.contactFormId ) { // Sends sumissions on form idform to the thank you page
                location = '/thank-you/';
            } else { // Sends submissions on all unaccounted for forms to the third thank you page
                // Do nothing
            }
        }, false );
    </script>
    <?php
}

enter image description here

Я не знаю, как сделать это возможным. Может кто-нибудь помочь мне, пожалуйста?

1 Ответ

0 голосов
/ 29 января 2019

Один из способов запретить прямой доступ к вашей странице «Спасибо» - это убедиться, что люди, попавшие туда, действительно пришли с вашей страницы «Свяжитесь с нами».

Попробуйте добавить это в * 1003 вашей темы.* file, прочитайте комментарии для подробностей:

/**
 * Redirects user to homepage if they try to
 * access our Thank You page directly.
 */
function thank_you_page_redirect() {
    $contact_page_ID = 22; // Change this to your "Contact" page ID
    $thank_you_page_ID = 2; // Change this to your "Thank You" page ID

    if ( is_page($thank_you_page_ID) ) {
        $referer = wp_get_referer();
        $allowed_referer_url = get_permalink( $contact_page_ID );

        // Referer isn't set or it isn't our "Contact" page
        // so let's redirect the visitor to our homepage
        if ( $referer != $allowed_referer_url ) {
            wp_safe_redirect( get_home_url() );
        }
    }
}
add_action( 'template_redirect', 'thank_you_page_redirect' );

Обновление:

Кроме того, эта версия JavaScript достигает того же результата (который должен быть более совместим с плагинами кэширования):

function mycustom_wp_head() {
    $home_url = get_home_url();
    $contact_page_ID = 22; // Change this to your "Contact" page ID
    $thank_you_page_ID = 2; // Change this to your "Thank You" page ID

    if ( is_page($thank_you_page_ID) ) :
    ?>
    <script>
        var allowed_referer_url = '<?php echo get_permalink( $contact_page_ID ); ?>';

        // No referer, or referer isn't our Contact page,
        // redirect to homepage
        if ( ! document.referrer || allowed_referer_url != document.referrer ) {
            window.location = '<?php echo $home_url; ?>';
        }
    </script>
    <?php
    endif;
}
add_action( 'wp_head', 'mycustom_wp_head' );
...