web-dev-qa-db-fra.com

Custom Post Type slug identique au nom de la page provoquant un conflit

J'ai un type de message personnalisé tout mis en place. Je voudrais que le slug soit identique à un nom de page, car tous ces CPT seront interrogés sur cette page particulière (/ team-members).

Si je règle le slug Custom Post Type sur l'URL de la page, cette page particulière ne charge plus le modèle de page. Il charge un modèle de publication brisé.

Réécriture de mon type de message personnalisé:

$rewrite = array(
    'slug'                  => 'team-members',
    'with_front'            => false,
    'pages'                 => false,
    'feeds'                 => false,
);

Cela me permet de générer l’URL appropriée de: http://www.example.org/team-members/bob-jones

Le problème, c’est que lorsque j’essaie d’accéder à la page: http://www.example.org/team-members/ , il ne restitue pas le fichier de modèle de page correct (justement intitulé page-team-members.php). L'enregistrement des paramètres de permalien n'a pas fonctionné.

Comment puis-je créer le slug d'URL de mon type de message personnalisé pour ne pas interférer avec une page intitulée exactement la même chose?

2
Joe

Ce qui apparaît sur http://www.example.org/team-members/ est l'archive "type de publication" pour votre type de publication. C'est la liste générée automatiquement des articles créés par WordPress. Si vous ne souhaitez pas que le type de publication ait une archive, vous pouvez la désactiver en définissant l'argument has_archive sur false:

register_post_type( 'post_type_name', array(
    'has_archive' => false,
) );

Vous pouvez maintenant créer une page dans/team-members sans conflit.

2
Jacob Peattie

J'ai trouvé au fil des années que le moyen le plus simple d'éviter ce type de conflit est de séparer les publications du CPT de la page en ajoutant une étape supplémentaire dans l'URL.

Par exemple, remplacez 'slug' => 'team-members', par 'slug' => 'team-members/member', pour que votre URL devienne http://www.example.org/team-members/member/bob-jones

Bien sûr, ce n'est pas idéal, et je préférerais que l'URL soit plus propre, mais vous devez parfois faire des compromis pour une vie facile :-)

1
Peter HvD