web-dev-qa-db-fra.com

Liens permanents hiérarchiques de type publication personnalisé ne se comportant pas comme prévu pour les pages parent/enfant

Lorsque vous avez des pages avec des enfants, la structure de permalien fonctionne à peu près comme ceci:

example.com/parent-page/child-page/

Tout va bien. Essayer d'aller à cette URL:

example.com/child-page/

ne fonctionne pas, ce qui est bien et comme prévu - je ne veux que l'URL unique de ma page enfant.

Cependant, j'ai configuré un type d'article personnalisé et je l'ai configuré pour qu'il soit hiérarchique, afin de se comporter comme des pages. Cela ne fonctionne pas tout à fait de la même manière:

example.com/custom-post-type/parent-page/child-page/

fonctionne comme prévu, mais en supprimant la page parent de l'URL:

example.com/custom-post-type/child-page/

affiche également la page enfant. Il aurait dû 404, j'aurais pensé.

J'ai utilisé les arguments suivants pour register_post_type:

$args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true, 
    'show_in_menu' => true, 
    'query_var' => true,
    'rewrite' => array('slug'=>'custom-post-type','with_front'=>false),
    'capability_type' => 'post',
    'has_archive' => false, 
    'hierarchical' => true,
    'menu_position' => null,
    'supports' => array('title','editor','thumbnail','excerpt','revisions','page-attributes')
); 

Il est tout à fait possible que j'ai mal compris certaines des options. Quelqu'un peut-il me dire si je fais quelque chose de mal ou s'il s'agit d'un bogue ou d'une fonctionnalité?

J'utilise 3.2.1, sans plugin, juste mon thème personnalisé.

Merci,

2
Dan

J'ai résolu la réponse à ce problème en procédant comme suit:

echo get_permalink( $page->ID );

Cela m'a donné les bons liens vers les pages.

1
user23678
example.com/custom-post-type/parent-page-1/child-page/
example.com/custom-post-type/parent-page-2/child-page/

Ce qui précède ne pourrait pas arriver. Si vous deviez donner le même nom à 2 pages (indépendamment du fait que leurs parents soient différents), alors WP modifierait le slug de l'une d'entre elles.

example.com/custom-post-type/parent-page-1/child-page/
example.com/custom-post-type/parent-page-2/child-page-1/

Entrer example.com/custom-post-type/child-page/ ou example.com/custom-post-type/child-page-1/ fonctionnerait comme prévu, mais je crois que example.com/custom-post-type/parent-page-2/child-page/ vous redirigerait vers example.com/custom-post-type/parent-page-1/child-page/ (bien que je ne sois pas à 100% à ce sujet).

0
David Gard