WordPress : Comment attacher un identifiant de région à une jolie URL ?

Publié par Jean-Michel le

Je veux pouvoir avoir une URL qui a une région définie par pays (aka USA = us ou Canada = ca) et je veux que l’url soit jolie. Rien de tout cela n’attache de variables à l’url.

Lors de la conception d’une page WordPress, il y a le champ slug qui est essentiellement l’URL de cette page.

<<site_url>>/<<slug>>/<<country_code>>

Je souhaite ajouter le code du pays à l’URL de mon thème et permettre à php de trier mon choix sans obtenir de 404. Ou, en raison d’URL canoniques, le ca ou nous pointe comme par magie vers d’autres pages. (c’est-à-dire si l’URL se termine par le code pays ca, le site redirige vers la page /carrières, ce qui n’est pas ce que je veux.)

Lire également:  J'ai essayé de déplacer Wordpress du sous-répertoire vers le domaine, le site a échoué

J’aimerais avoir un exemple à fournir, mon site n’est pas encore en ligne. Travaille toujours dans un état de développement.

Existe-t-il un moyen de modifier le *.htaccess pour personnaliser les règles en fonction de mes besoins ? Ou existe-t-il un autre moyen de résoudre ce problème ? J’ai envisagé l’internationalisation, mais des changements d’image/de mise en page ont été suggérés.

Mise à jour

Utilisation add_rewrite_rulecomme déclaré dansfunctions.php

<?php
  function custom_rewrite_rule() {
    add_rewrite_rule('^([^/]*)/([^/]*)/?','$matches[1].php?country=$matches[2]','top');
    //student page_id = 95
    add_rewrite_rule('^student/([^/]*)/?','index.php?page_id=95&country=$matches[1]','top');
  }
  add_action('init', 'custom_rewrite_rule', 10, 0);
?>

Comment accéder au pays ? Est-ce via $_GET['country']?

Solution n°1 trouvée

En faisant référence à cette question, j’ai pu résoudre ce problème:

Lire également:  Wordpress : Supprimer les paramètres si le thème est supprimé ?

Besoin d’aide avec add_rewrite_rule

Pour afficher brièvement les modifications que j’ai apportées, voilà, dans mon thème, functions.phpj’ai ajouté l’action suivante :

add_action('init','custom_rewrite_rule');
function custom_rewrite_rule(){
    add_rewrite_rule('^student/([^/]*)/','index.php?pagename=student&country=$matches[1]','top');
}

Ce qui précède permet à mes URL d’être la jolie forme de :

  • {{site_url}}/student/ca/
  • {{site_url}}/student/us/

Cependant, cette forme d’URL n’est pas reconnaissable tant que les permaliens ne sont pas vidés. Pour ce faire, accédez à votre tableau de bord wp-admin , sélectionnez Settings->Permalinksdans l’écran de menu de droite et appuyez sur le Savebouton en bas de l’écran principal.

Lire également:  les shortcodes wordpress apparaissent dans les messages de prévisualisation

Maintenant, les URL ci-dessus devraient fonctionner.

Ensuite, vous souhaitez enregistrer la variable supplémentaire dans l’URL pour une utilisation ultérieure. Dans l’exemple ci-dessus, c’est country. Cela se fait en utilisant add_filterdans functions.php:

add_filter('query_vars','country_selection');
function country_selection($query_vars){
    $query_vars[]='country';
    return $query_vars;
}

Enfin, vous voudrez peut-être accéder à cette valeur plus tard dans les pages (c’est-à-dire : student.php). Pour ce faire, utilisez les éléments suivants :

$wp_query->get('country');

Vous pouvez echo / var_dump la variable ci-dessus ou stocker son résultat dans une autre variable pour une utilisation ultérieure.

Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *