J'essayais de créer une page spécifique à l'auteur avec une URL spécifique à l'auteur et cela fonctionnait bien, mais lorsque j'ai créé cette URL, elle n'a pas été prise en compte, à la suite de 2 facteurs
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, ce qui créera un problème.Alors j’avais l’intention d’avoir une URL d’auteur de blog comme SO avoir
www.myblog.com/writer/001/umesh-awasthi
où 001
est l'identifiant de l'utilisateur, qui sera toujours unique.
le deuxième problème concerne la pagination, car je suis capable de créer une pagination sur la page de l'auteur, mais lorsque l'utilisateur clique sur la deuxième page, l'URL est le suivant.
http://localhost/blog/wordpress/writer/umesh-awasthi/page/2/
donc, conformément à ma règle de réécriture d'URL, les données suivantes sont générées 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 le recevra sous la forme umesh-awasthi/page/2
Ma question est puis-je réécrire la règle afin que je devrais obtenir des données de la manière suivante dans trois variables différentes
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é arg_username dans le code ci-dessus.