Dis que j'ai un CPT appelé i Dunno, "Library"
qui est juste un ensemble de "pages" ("has_archive" => false
) et la limite de réécriture est "bibliothèque". J'ai également l'intention d'avoir un ensemble de pages comme "À propos de", "Archives" et "nouveaux livres".
Puis-je faire quelque chose afin que je fasse une page appelée "home" et au lieu de son URL étant https://example.org/library/home
est-ce que ça pourrait être https://example.org/library
? Et puis la page à propos de l'URL de https://example.com/library/about
NOTE - Je sais que je pourrait Définir la limace de réécriture sur "/" puis créer une nouvelle page nommée "Bibliothèque", puis faire des choses comme la bibliothèque "À propos de" ou "Archives" Children of "Bibliothèque "Mais je me sens comme une étape supplémentaire que mes utilisateurs vont être mécontents de devoir faire.
Et si j'ai fait un deuxième CPT, "Bibliothèques-livres" y aurait-il de la sorte pour définir sa goutte de réécriture à "library/books"
ou aurais-je besoin d'un chemin totalement différent? Donc je voudrais https://example.org/library/books
Pour être l'archive du CPT "Library-Books", puis https://example.org/library/books/book-title
Pour les poteaux de livres individuels.
La façon dont je le vois, tu pourrais faire:
// Via the init hook, do all these:
register_post_type( 'library-books', [
'public' => true,
'label' => 'Library Books',
'rewrite' => [ 'with_front' => false, 'slug' => 'library/books' ],
'has_archive' => 'library/books',
// other args here
] );
register_post_type( 'library', [
'public' => true,
'label' => 'Libraries',
'rewrite' => [ 'with_front' => false, 'slug' => 'library' ],
'has_archive' => false,
// other args here
] );
add_rewrite_rule( '^library/?$', 'index.php?library=home', 'top' );
C'est à dire.
Enregistrez le library-books
CPT en premier, avec library/books
comme la limace de réécriture ainsi que has_archive
.
Ensuite, enregistrez le CPT library
CPT avec library
comme limite de réécriture, et has_archive
défini sur false
.
Et enregistrer une règle de réécriture personnalisée pour le example.com/library
qui (en interne) charge example.com/library/home
(qui est un poste du CPT library
CPT, bien que vous puissiez vraiment modifier la requête de la règle de réécriture pour charger un poste d'un autre type de poste tel que page
).
Mais bien sûr, dans votre library
CPT, vous ne devriez pas avoir de poste avec books
comme la limace.