web-dev-qa-db-fra.com

Comment empêcher la réécriture par défaut de la maison sur une page statique

Je cherche un moyen d'empêcher le comportement par défaut (lorsque vous avez une page statique définie en tant que page d'accueil du site ou "page d'accueil" (dans settings>reading>front page displays);

Je veux que la page domain.com/ pointe ici (comme c'est le cas), mais si je faisais une page home, qui aurait autrement lieu à domain.com/home, Wordpress redirige automatiquement vers domain.com, et il n'y a donc aucun moyen de visiter et de rester sur domain.com/home.

Est-ce que quelqu'un a une idée comment/où faire cela? J'ai essayé d'étudier les variables php $_SERVER et d'essayer de modifier les règles de réécriture, mais je n'y trouve pas de règle qui corresponde de manière fiable à cette situation. (Il existe une règle pour une page avec la page home page id, mais je ne peux pas cibler cette cible de manière fiable (et je pense que c'est en fait le routage domain.com/ -> domain.com/home.)

Pour réitérer (et peut-être clarifier), comment rendre la 'page de garde' de wordpress disponible à la racine du domaine (par défaut et active), mais également au permalien par défaut de la page ...

4
josh

La redirection s'effectue grâce à redirect_canonical() - nous pouvons simplement effectuer une analyse avec un filtre et le désactiver pour la page d'accueil:

function wpse_184163_disable_canonical_front_page( $redirect ) {
    if ( is_page() && $front_page = get_option( 'page_on_front' ) ) {
        if ( is_page( $front_page ) )
            $redirect = false;
    }

    return $redirect;
}

add_filter( 'redirect_canonical', 'wpse_184163_disable_canonical_front_page' );

Maintenant, vous pouvez accéder à la page d'accueil à la racine et en slug, pas de redirection.

6
TheDeadMedic

Si je vous ai bien compris, vous avez simplement besoin de votre domain.com/home pour afficher également votre page d'accueil? Créez simplement ceci dans un dossier appelé home dans le même dossier que votre /wp-content etc.

Nommez-le index.php

?php
    header("Location: http://domain.com");
    exit();
?>
0
Bysander