J'aimerais créer la structure de lien suivante sur mon site:
properties
avec properties
CPT, page 1.properties
avec properties
CPT, page 2.properties
avec les détails de la propriété.J'ai un type de message personnalisé (CPT) appelé property
. Il est enregistré comme suit avec la règle rewrite
spécifiée en tant que 'rewrite' => array('slug' => 'properties', 'with_front' => false)
:
function property_post_type_init() {
$labels = array(
'name' => _x('Properties', 'post type general name'),
'singular_name' => _x('Property', 'post type singular name'),
'add_new' => _x('Add New', 'property')
);
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'show_ui' => true,
'rewrite' => array('slug' => 'properties', 'with_front' => false),
'query_var' => true,
'capability_type' => 'post',
'hierarchical' => false,
'show_in_nav_menus' => false,
'menu_position' => 5,
'supports' => array(
'title',
'editor',
'revisions'
)
);
register_post_type('property',$args);
J'ai aussi une page avec le slug properties
et la structure de permalien est définie comme /%category%/%postname%/
Sur la page Properties
, je construis un nouvel objet WP_Query
avec les arguments suivants:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args = array(
'post_type' => 'property',
'orderby' => 'date',
'order' => 'DESC',
'paged' => $paged
);
return $args;
J'utilise un code de pagination personnalisé (dans functions.php) qui génère correctement la pagination avec les URL correctes:
<my-site>/properties/
<my-site>/properties/page/2/
<my-site>/properties/page/3/
Cependant, lorsque je clique sur une page de la pagination, je suis redirigé vers la page 404. J'ai attendu les paramètres de requête et ils sont les suivants:
[page] => 2
[property] => page
[post_type] => property
[name] => page
Ce qui n'est pas correct! Je ne comprends pas d'où viennent ces paramètres:
[page] => 2
[property] => page
[name] => page
Je suis sûr que cela a quelque chose à voir avec la règle rewrite
lors de l'enregistrement d'un CPT.
Comment puis-je obtenir la configuration suivante pour fonctionner correctement:
properties
qui affiche toutes les publications properties
avec des publications personnalisées avec pagination.properties
avec la règle 'rewrite' => array('slug' => 'properties', 'with_front' => false)
./%category%/%postname%/
Donc, j'ai la structure de lien suivante:
properties
avec properties
CPT, page 1.properties
avec properties
CPT, page 2.properties
avec les détails de la propriété.J'espère que cela a du sens.
Merci, Dasha
Essayez de changer le slug de la page en quelque chose d'autre et de changer votre enregistrement de type de message en ceci:
$args = array(
'labels' => $labels,
'public' => true,
'publicly_queryable' => true,
'has_archive' => true,
'show_ui' => true,
'rewrite' => array('slug' => 'properties', 'with_front' => false),
'query_var' => true,
'capability_type' => 'post',
'hierarchical' => false,
'show_in_nav_menus' => false,
'menu_position' => 5,
'supports' => array(
'title',
'editor',
'revisions'
)
);
Le nouvel argument en vigueur est 'has_archive'
. Ceci est nouveau dans la version 3.1 et vous donne une structure /properties/
, /properties/page/2
, etc. par défaut. Puis effacez vos règles de réécriture et voyez si cela résout le problème. Vous pouvez également avoir besoin de commenter le code que vous avez écrit en jouant avec les règles de requête ou de réécriture.