Ma configuration est la suivante:
J'ai obtenu de bons permaliens du format suivant en utilisant la règle de réécriture ci-dessous:
add_rewrite_rule(
'region/([^/]+)/([^/]+)/([^/]+)/?',
'index.php?taxonomy=region&term=$matches[1]&post_type=$matches[3]',
'top'
);
Cela me donne une URL fonctionnelle comme:
http://example.com/region/scotland/type/event/
qui correspond exactement à ce dont j'ai besoin (région/[Écosse] = taxonomie, type/[événement] = type de publication)
Cependant, j'ai essayé d'ajouter un add_rewrite_rule supplémentaire pour gérer la pagination dans le format d'URL suivant (je ne m'entend vraiment pas bien avec regex!) Mais je ne parviens tout simplement pas à faire en sorte que la pagination fonctionne correctement. atteindre les objectifs suivants:
http://example.com/region/scotland/type/event/page/1
http://example.com/region/scotland/type/event/page/2
http://example.com/region/scotland/type/event/page/3
Je pense que je suis presque arrivé car une règle de réécriture fonctionne correctement - mais après avoir essayé beaucoup de choses différentes, je n’ai tout simplement pas été en mesure d’atteindre la combinaison correcte de règles regex/réécriture pour réaliser la pagination. Le permalien pas si joli pour cette requête, qui fonctionne correctement est:
http://example.com/index.php?taxonomy=region&term=scotland&post_type=event&paged=1
As-tu essayé:
Le principal:
add_rewrite_rule( 'region/([^/]+)/type/([^/]+)/?', 'index.php?taxonomy=region&term=$matches[1]&post_type=$matches[2]', 'top' );
Pour la pagination
add_rewrite_rule( 'region/([^/]+)/type/([^/]+)/page/([0-9]{1,})/?', 'index.php?taxonomy=region&term=$matches[1]&post_type=$matches[2]&paged=$matches[3]', 'top' );
Par curiosité, j'ai remplacé l'un des ([^/]+)
par le "type" littéral, car cela ne semble pas être une variable dynamique.
Si la pagination ne fonctionne pas, essayez de changer l’ordre dans lequel elle est déclarée, c’est-à-dire avant ou après vos autres règles de réécriture. Beaucoup de problèmes ont à voir avec l'ordre dans lequel ils sont déclarés, avec quels effets la règle est exécutée en premier.
En outre, le plug-in Rewrite Rules Inspector peut être très utile pour vous aider à déterminer quelles règles de réécriture sont exécutées pour des URL spécifiques.
La commande est importante, vous devriez écrire:
add_rewrite_rule( 'region/([^/]+)/type/([^/]+)/page/([0-9]{1,})/?', 'index.php?taxonomy=region&term=$matches[1]&post_type=$matches[2]&paged=$matches[3]', 'top' );
avant
add_rewrite_rule( 'region/([^/]+)/type/([^/]+)/?', 'index.php?taxonomy=region&term=$matches[1]&post_type=$matches[2]', 'top' );