Ajouter une règle de réécriture pour une page personnalisée

4

J'essayais de créer une page spécifique à l'auteur avec une URL spécifique à l'auteur et tout fonctionnait bien, mais lorsque j'ai créé cette URL, cette URL n'a pas été prise en compte après les 2 facteurs suivants

  1. Conflit de noms d'auteurs (nom similaire).
  2. Option de pagination à ajouter à la page de l'auteur (pour ses publications)

voici ma règle initiale

function add_my_rule() {    
    global $wp; 
    $wp->add_query_var('args');   
    add_rewrite_rule('writer\/(.*)','index.php?pagename=writer&args=$matches[1]','top'); 
    /*global $wp_rewrite;
    $wp_rewrite->flush_rules();*/
}
add_action('init', 'add_my_rule'); 

Ce fichier fonctionnait pour une URL, par exemple

www.myblog.com/writer/umesh-awasthi ,

mais il peut y avoir plus d’auteurs avec le même nom et cela va créer un problème.Alors j’avais l’intention d’avoir une URL d’auteur de blog comme SO

www.myblog.com/writer/001/umesh-awasthi001 est l'identifiant de l'utilisateur, qui sera toujours unique.

Le deuxième problème concerne la pagination, car je peux créer une pagination sur la page de l'auteur, mais lorsque l'utilisateur clique sur la deuxième page, l'URL apparaît sous la forme

.

http://localhost/blog/wordpress/writer/umesh-awasthi/page/2/ donc, conformément à ma règle de réécriture d'URL, les données suivantes seront définies sous le paramètre umesh-awasthi/page/2 , ce qui signifie que ma requête ne fonctionnera plus, car elle attendra le nom de l'auteur sous la forme umesh-awasthi et l'obtiendra en tant que umesh-awasthi/page/2

Ma question est: est-ce que je peux récrire la règle de manière à obtenir des données de la manière suivante dans trois variables différentes

  1. ID utilisateur
  2. nom de l'auteur
  3. numéro de page (s'il existe) être nouveau sur le WP et réécrire je ne sais pas comment je peux y arriver merci d'avance
posée Umesh Awasthi 19.01.2012 - 17:41

1 réponse

6
function add_my_rule() {    
    global $wp; 
    $wp->add_query_var('args');   
    $wp->add_query_var('arg_username');
    add_rewrite_rule('writer/([0-9]+)/([^/]*)/page/([0-9]+)','index.php?pagename=writer&args=$matches[1]&arg_username=$matches[2]&paged=$matches[3]','top');
    add_rewrite_rule('writer/([0-9]+)/([^/]*)','index.php?pagename=writer&args=$matches[1]&arg_username=$matches[2]','top');
    /*global $wp_rewrite;
    $wp_rewrite->flush_rules();*/
}
add_action('init', 'add_my_rule');

Cela devrait faire l'affaire. Une rewriterule pour writer / user_id / username (nom d'utilisateur n'est pas utilisé dans la rewriterule mais doit nécessairement le faire fonctionner. La deuxième rewriterule est la même, sauf qu'elle ajoute une pagination.

EDIT: ajout du nom d'utilisateur arg_username dans le code ci-dessus.

    
réponse donnée Rob Vermeer 19.01.2012 - 19:43

Lire d'autres questions sur les étiquettes