J'ai une page "À propos de nous" sur mon site avec des pages enfants. J'ai créé un type de message personnalisé "History", où le slug de réécriture est "history".
J'utilise archive-cpt_history.php comme fichier modèle pour ce CPT. Tout fonctionne exactement comme il est configuré, je peux aller à website.com/history/ pour voir ma boucle CPT dans toute sa splendeur.
Le problème est que j'ai besoin de cette histoire CPT pour devenir un enfant de À propos de nous. Comment puis-je réécrire le slug sur/about-us/history pour qu'il fonctionne avec l'archive/la page de destination? Je peux le faire:
'rewrite' => array( 'slug' => '/about-us/history', 'with_front' => false ),
Mais cela ne fonctionne qu'avec les publications simples, pas l'archive/la page de destination. Toute aide serait grandement appréciée.
De plus, si cela est pertinent, une fois le problème résolu, single-cpt_history.php utilisera simplement "header (" Emplacement: ". Site_url (")); "pour rediriger les utilisateurs chez eux. Il n’existe jamais de lien permanent vers un message d’histoire individuel. La conception ne fonctionne tout simplement pas comme ça. La page de destination de l'historique affiche toujours tous les articles du CPT.
Dans vos arguments de type de publication de registre, définissez rewrite
sur true
et has_archive
sur le chemin souhaité pour la page d'archive ( sans barre oblique):
'rewrite' => true,
'has_archive' => 'about-us/history'
En ce qui concerne la redirection, plutôt que de se rendre jusqu'au modèle, vous pouvez court-circuiter le chargement de publications uniques plus tôt et supprimer la nécessité du modèle unique de cpt:
function wpa_parse_query( $query ){
if( is_singular() && isset( $query->query_vars['cpt_history'] ) ){
wp_redirect( home_url() );
}
}
add_action( 'parse_query', 'wpa_parse_query' );