Maison > Questions et réponses > le corps du texte
J'ai construit un site Wordpress avec une page appelée "Nieuwsberichten". L'URL ressemble à
https://www.example.com/newsitems
Cette page est dynamique, j'ai besoin d'un paramètre supplémentaire appelé "news_page"
https://www.example.com/news/?news_page=recent
L'URL ci-dessus n'est pas conviviale, j'ai donc créé une règle de réécriture pour cela et ajouté la variable "news_page".
fonctions.php
function add_query_vars($vars){ $vars[] = 'news_page'; return $vars; } add_filter( 'query_vars', 'add_query_vars', 10, 1 ); function rewrite_paged(){ add_rewrite_rule('^nieuwsberichten/([0-9]+)/?', 'nieuwsberichten?news_page=$matches[1]', 'top'); } add_action('init', 'rewrite_paged');
J'ai depuis rafraîchi le permalien Menu -> Paramètres -> Permaliens -> Enregistrer
Si je navigue vers
https://www.example.com/news/recent/
Il sera redirigé vers
https://www.example.com/newsmessages/
Qu'est-ce qui me manque dans mon code ?
J'espère que quelqu'un pourra m'aider à résoudre ce problème
P粉5415512302024-01-17 14:33:44
Dans la partie regex, vous spécifiez uniquement des entrées numériques mais transmettez du texte comme "le plus proche" dans l'URL. Peut-être que l'erreur réside ici. Veuillez vérifier si cela fonctionne pour la saisie numérique et modifier votre expression si tel est le problème. De plus, la structure de l'URL que vous avez spécifiée ne semble pas tout à fait correcte.
Quoi qu'il en soit, je ne suis pas sûr de ma réponse, j'apprécierais donc que vous puissiez la confirmer après vérification.
Je ne peux pas le vérifier ou le tester pour le moment. Si votre problème n'est pas résolu, je l'examinerai plus en détail.
Vous pouvez l'utiliser comme ceci :
function rewrite_paged(){ add_rewrite_tag('%news_page%', '([^/]+)'); add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'nieuwsberichten?news_page=$matches[1]', 'top'); } add_action('init', 'rewrite_paged');
De plus, si vous pointez vers une page, vous devez utiliser l'ID de la page ou le nom de la page. Blog ou produit, etc. Si tel est le cas, vous devrez toujours utiliser des paramètres et vous devrez rediriger cette URL vers index.php. Je vous laisse un exemple pour que vous compreniez de quoi je parle, et pour que ce soit plus facile à voir, vous pouvez visualiser la réécriture sur votre site comme ceci :
Voir l'exemple :
global $wp_rewrite; print_r($wp_rewrite);
Exemple :
Nom de la page correspondant :
add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'index.php?pagename=nieuwsberichten&news_page=$matches[1]', 'top');
ID de page correspondant :
add_rewrite_rule('^nieuwsberichten/?([^/]*)$', 'index.php?page_id=10000&news_page=$matches[1]', 'top');
Votre exemple est correct si vous effectuez une installation en dehors de WordPress, mais s'il se trouve dans WordPress, toutes les requêtes doivent être dirigées vers index.php. Vous devrez donc peut-être modifier le code que j'ai donné comme ces exemples.