J'ai suivi les étapes sur la répondre ici et cela a fonctionné à merveille.
Mais mon problème est sur cette partie,
sur l'original:
add_filter('rewrite_rules_array', 'mmp_rewrite_rules');
function mmp_rewrite_rules($rules) {
$newRules = array();
$newRules['custom-post-type-base/(.+)/(.+)/(.+)/(.+)/?$'] = 'index.php?custom_post_type_name=$matches[4]'; // my custom structure will always have the post name as the 5th uri segment
$newRules['custom-post-type-base/(.+)/?$'] = 'index.php?taxonomy_name=$matches[1]';
return array_merge($newRules, $rules);
}
ma version:
add_filter('rewrite_rules_array', 'mmp_rewrite_rules');
function mmp_rewrite_rules($rules) {
$newRules = array();
$newRules['custom-post-type-base/(.+)/(.+)/(.+)/?$'] = 'index.php?custom_post_type=$matches[3]';
$newRules['custom-post-type-base/(.+)/?$'] = 'index.php?custom_taxonomy=$matches[1]';
return array_merge($newRules, $rules);
}
Étant donné que ma taxonomie comporte deux niveaux, elle ne peut pas savoir si le 2nd paramètre (custom-post-type-base/(.+)/[here]/
) est une publication personnalisée ou une taxonomie personnalisée. Il est renvoyé correctement dans la taxonomie personnalisée, mais renvoie 404 dans un type de publication personnalisé avec le type de publication en cours de classement. la taxonomie parente.
Voir des exemples d'URL:
"/custom-post-type-base/taxonomy-parent/taxonomy-child/single-custom-post-type/"
/*works as single custom post*/
"/custom-post-type-base/taxonomy-parent/taxonomy-child/"
/*works as custom taxonomy page*/
"/custom-post-type-base/taxonomy-parent/"
/*works as custom taxonomy page too*/
"/custom-post-type-base/taxonomy-parent/single-custom-post-type/"
/*returns a 404*/
Tu as:
Une règle de réécriture pour gérer le poste étant dans la 2ème ou 3ème partie n'est pas dans la liste ci-dessus, d'où pourquoi vous obtenez un 404.
Si nous prenons cette règle de réécriture:
$newRules['basename/(.+)/(.+)/(.+)/(.+)/?$'] = 'index.php?custom_post_type_name=$matches[4]'; // my custom structure will always have the post name as the 5th uri segment
Et modifiez-le légèrement en utilisant du bon sens, à savoir:
nom_base /(.+)/(.+)/(.+)/(.+) /? $ ....
custom_post_type_name = $ correspond à [ 4 ]
// ma structure personnalisée aura toujours le nom du message sous la forme 5 th uri segment
nom_base /(.+)/(.+)/(.+)/?$. ...
custom_post_type_name = $ correspond à [ 3 ]
// ma structure personnalisée aura toujours le nom du message sous la forme 4 th uri segment
nom_base /(.+)/(.+)/?$ ....
custom_post_type_name = $ correspond à [ 2 ]
// ma structure personnalisée aura toujours le nom du message sous la forme 3 th uri segment
etc
Placez-les dans l'ordre croissant avant votre règle existante et répétez autant de fois que nécessaire.