Maison  >  Questions et réponses  >  le corps du texte

Méthodes WordPress pour ajouter des paramètres à une structure d'URL conviviale

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粉019353247P粉019353247251 Il y a quelques jours394

répondre à tous(1)je répondrai

  • P粉541551230

    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.

    https://developer.wordpress.org/reference/functions/add_rewrite_tag/ C'est probablement la fonction que vous devriez utiliser pour ajouter des paramètres. Cette fonction ne nécessite pas non plus la fonction query_var. Je ne pense donc pas que vous ayez besoin d'utiliser d'autres fonctions.

    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.

    répondre
    0
  • Annulerrépondre