web-dev-qa-db-fra.com

Blog installé dans un sous-répertoire mais devant créer des pages à la racine. Comment utiliser les permaliens?

Le blog de notre entreprise est installé dans /blog. Notre structure de lien permanent est /%postname%/ donc les publications ressemblent à https://www.domain.com/blog/post

Nous avons été invités à publier une série de guides qui doivent être installés dans /buying-guides/ exemple: https://www.domain.com/buying-guides/kittens c'est-à-dire en dehors du dossier WordPress.

Je pensais que la solution était simplement de créer une page appelée guides d'achat, puis de créer une page par guide enfant. Nous nous retrouvons ensuite avec des URL telles que https://www.domain.com/blog/buying-guides/kittens . J'ai ensuite créé une règle .htaccess dans notre dossier racine avec

RewriteRule ^buying-guides/(.+)$    /blog/$1 [L,NC]

et cela semble fonctionner à merveille! Jusqu'à ce que je réalise cela, il y a plus que cela, car WordPress n'est évidemment pas au courant de la réécriture. Par exemple, nous utilisons la fonction the_permalink() pour générer le lien dans les titres de nos pages, ce qui génère évidemment le lien incorrect (bien que cela fonctionne toujours, mais nous ne voulons pas que les clients voient aucune mention de /blog/ lors de la navigation dans les guides d'achat.

Existe-t-il une bonne solution à ce problème? Peut-être qu'un filtre changera automatiquement toutes les URL juste avant que la page soit rendue de /blog/buying-guides/ à /buying-guides/?

Toute aide serait grandement appréciée!

3
Michelle

Avez-vous essayé d'utiliser the_permalink() filter hook ?

add_filter('the_permalink', 'remove_blog');
function remove_blog($url) {
    //only affects the permalink of pages
    if(is_page()){
        return str_replace('blog/', '', $url);
    }
    return $url;
}

En combinaison avec votre règle de réécriture actuelle dans le fichier .htaccess de votre répertoire racine.

1
cybmeta