Comment créer des itinéraires d'URL personnalisés?

42

J'ai une exigence très particulière, j'espère pouvoir l'expliquer sans trop de confusion. J'ai créé un modèle de page dans lequel je répertorie certaines propriétés d'un fichier XML externe. Jusqu'à présent, aucun problème, supposons que l'URL ressemble à ceci: enlace

Chaque propriété a un lien qui devrait rediriger l'utilisateur vers une page "Propriété unique" qui affiche plus d'informations à son sujet. Ce que je me demandais, c'est s'il existe un moyen de créer un lien comme celui-ci enlace ? Où "123" serait l'id de la propriété, si j'ai l'URL comme propriétés / some_id, je veux pouvoir charger un fichier de vue (comme les fichiers single.php ou page.php) mais spécifique à cette condition d'URL .

Est-ce possible? Merci d'avance!

    
posée Javier Villanueva 20.08.2011 - 00:24

2 réponses

50

Ajoutez ceci au fichier functions.php de votre thème ou à mettez-le dans un plugin .

add_action( 'init', 'wpse26388_rewrites_init' );
function wpse26388_rewrites_init(){
    add_rewrite_rule(
        'properties/([0-9]+)/?$',
        'index.php?pagename=properties&property_id=$matches[1]',
        'top' );
}

add_filter( 'query_vars', 'wpse26388_query_vars' );
function wpse26388_query_vars( $query_vars ){
    $query_vars[] = 'property_id';
    return $query_vars;
}

Ceci ajoute une règle de réécriture qui dirige les demandes vers /properties/ avec toute combinaison de nombres suivant le nom de page properties , avec la requête var property_id définie. Assurez-vous simplement de visiter la page des paramètres de votre permalien et de l’enregistrer pour vider les règles de réécriture afin que cette nouvelle règle soit incluse.

Dans votre modèle page-properties.php , get_query_var('property_id') renverra l'id de la propriété s'il a été défini, sinon il affichera la page de propriétés par défaut.

    
réponse donnée Milo 20.08.2011 - 01:44
8

Une autre façon de le faire:

add_action('init', function() {
    add_rewrite_rule( '^properties/([0-9]+)/?',
                      'index.php?pagename=properties&property_id=$matches[1]',
                      'top' );
}, 10, 0);

add_action('init', function() {
    add_rewrite_tag( '%property_id%', '([^&]+)' );
}, 10, 0);

règle Codex Rewrite API / add rewrite

balise d'API Codex Rewrite / add rewrite

    
réponse donnée Christian Lescuyer 21.05.2017 - 11:24

Lire d'autres questions sur les étiquettes