web-dev-qa-db-fra.com

WordPress Global Redirect

J'ai besoin de développer cette discussion Rediriger tout le site Web vers une seule page afin d'inclure deux pages plutôt qu'une.

Sur ce site, il me faut deux pages pour être en direct et toutes les autres pour rediriger vers la page d'accueil.

http://prairiebrand.com/

C'est le code que j'essaie et je reçois une redirection perpétuelle.

add_action( 'template_redirect', 'wpse_76802_goodbye_redirect' );

    function wpse_76802_goodbye_redirect() {
        if (( ! is_page( 16372 ) ) || ( ! is_page( 16384 ) )) {
            wp_redirect( esc_url_raw( home_url( 'index.php?page_id=16372' ), 301 ) );
            exit;
        }
    }
1
Brett

is_page() supporte aussi array, vous pouvez donc faire quelque chose comme ceci.

add_action( 'template_redirect', 'wpse_76802_goodbye_redirect' );

function wpse_76802_goodbye_redirect() {
    if ( !is_page( array( 16372, 16384 ))) {
        wp_redirect( esc_url_raw( home_url( 'index.php?page_id=16372' ), 301 ) );
        exit;
    }
}
1
Castiblanco

Vous avez une condition invalide. Remplacez || par && (sinon, if sera toujours VRAI):

if ( !is_page( 16372 ) && !is_page( 16384 ) )

Cela signifie: si l'ID de la page en cours n'est pas 16372 ET n'est pas 16384, alors redirigez-le.

Code complet:

add_action( 'template_redirect', 'wpse_76802_goodbye_redirect' );

function wpse_76802_goodbye_redirect() {
    if ( !is_page( 16372 ) && !is_page( 16384 ) ) {
        wp_redirect( esc_url_raw( home_url( 'index.php?page_id=16372' ), 301) );
        exit;
    }
}
1
nmr