J'ai des problèmes avec les archives pour un type de message personnalisé.
/address/
/address/post#/
Lorsque j'active cette fonctionnalité, la page WordPress située à /address/
est remplacée par l'archive de messages personnalisés.
Comment puis-je empêcher cela de se produire? Je veux que la page WordPress apparaisse à /address/
au lieu de l'archive.
Lorsque vous enregistrez votre type de publication, définissez l'argument has_archive
sur false. Si vous le modifiez, n'oubliez pas de vider vos règles de réécriture pour voir le changement.
Maintenant, cela fonctionne bien si, comme vous l'avez demandé, vous souhaitez afficher la page et non les archives. Qu'en est-il de la situation dans laquelle vous souhaitez afficher le contenu de la page ainsi que la liste des publications personnalisées?
Vous pouvez utiliser deux approches pour y parvenir.
C’est celui que je vois le plus souvent sur le Web. Créez un modèle de page et, après avoir affiché le titre et le contenu, utilisez une boucle personnalisée pour afficher vos publications. Cela fait le travail, mais les gens semblent être souvent dérangés par une pagination adéquate.
Ceci est mon approche préférée. Je garde has_archive
lorsque j'enregistre mon type d'article et que je crée une page normale à utiliser avec le modèle d'archive. Le slug de la page correspond au slug de l'archive. Par défaut, les règles de réécriture de WP sont ordonnées de manière à ce que l'archive l'emporte sur la page.
Au début de mon modèle archive-{post_type}.php
, je place ceci:
$queried_object = get_queried_object();
$page_data = get_page_by_path( $queried_object->rewrite['slug'] );
/* no need to check our context, as we know that this
code will only run for our CPT archives
*/
if ( !is_single() ) {
echo apply_filters('the_content', $page_data->post_content);
}
// process the content in the same way that the_content would within a loop
// Now go into your usual archive loop...
Si vous préférez, vous pouvez utiliser un identifiant de page ou même configurer une option pour votre type de publication qui équivaut à la page intégrée pour les publications.
De cette façon, vous n'avez pas à reconstruire vous-même la requête d'archive la plus difficile.
Merci à tous pour votre aide.
Andy m'a mis sur la bonne voie. Je devais juste ajouter:
flush_rewrite_rules ();
Merci encore!