Adicionar Regra de Regravação para página personalizada

4

Estava tentando criar uma página específica do autor com URL específico do autor e estava funcionando bem, mas quando eu criei este URL, não levei em conta após dois fatores

  1. Conflito do nome do autor (nome semelhante).
  2. Opção de paginação a ser adicionada à página do autor (para as postagens publicadas)

aqui está minha regra inicial

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'); 

Este foi um arquivo de trabalho para uma URL dizer

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

mas pode haver mais autor com o mesmo nome e isso criará um problema. Por isso, eu estava planejando ter o URL do autor do blog como SO

www.myblog.com/writer/001/umesh-awasthi em que 001 é o ID do usuário, que sempre será exclusivo.

segunda questão é com paginação, como eu sou capaz de criar paginação na página do autor, mas quando o usuário está clicando na segunda página, o URL está vindo como

http://localhost/blog/wordpress/writer/umesh-awasthi/page/2/ , de acordo com minha regra de URL-Rewrite, receberei os dados a seguir como parâmetro umesh-awasthi/page/2 , o que significa que agora minha consulta não funcionará, pois espera o nome do autor como umesh-awasthi e a obterá como umesh-awasthi/page/2

Minha pergunta é que eu posso reescrever a regra para que eu possa obter dados da seguinte maneira em três variáveis diferentes

  1. userid
  2. nome do autor
  3. número da página (se sair) sendo novo para o WP e reescrever eu não tenho certeza de como eu posso conseguir isso obrigado antecipadamente
por Umesh Awasthi 19.01.2012 / 17:41

1 resposta

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');

Isso deve fazer o truque. Um rewriterule para writer / user_id / username (nome de usuário não é usado no rewriterule, mas é necessariamente para fazê-lo funcionar. O segundo rewriterule é o mesmo, exceto que ele adiciona paginação.

EDIT: adicionado arg_username no código acima.

    
por Rob Vermeer 19.01.2012 / 19:43