Agregar regla de reescritura para una página personalizada

4

Estaba intentando crear una página específica del autor con la URL específica del autor y funcionaba bien, pero cuando creé esta URL no se tuvo en cuenta después de 2 factores

  1. Conflicto de nombre del autor (nombre similar).
  2. La opción de paginación se agregará a la página del autor (para sus publicaciones publicadas)

aquí está mi regla 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 archivo funcionaba para una URL, digamos

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

pero puede haber más autores con el mismo nombre y esto creará un problema. Así que planeaba tener la URL del autor del Blog como SO tienen

www.myblog.com/writer/001/umesh-awasthi donde 001 es el ID de usuario que siempre será único.

el segundo problema es con la paginación, ya que puedo crear la paginación en la página del autor, pero cuando el usuario hace clic en la segunda página, la URL aparece como

http://localhost/blog/wordpress/writer/umesh-awasthi/page/2/ así que de acuerdo con mi regla de Reescritura de URL, obtendré los siguientes datos como parámetro umesh-awasthi/page/2 , lo que significa que ahora mi consulta no funcionará, ya que esperará el nombre del autor como umesh-awasthi y lo obtendrá como umesh-awasthi/page/2

Mi pregunta es ¿puedo reescribir la regla para que pueda obtener datos de la siguiente manera en tres variables diferentes?

  1. ID de usuario
  2. nombre del autor
  3. número de página (si sale) ser nuevo en el WP y volver a escribir no estoy seguro de cómo puedo lograr esto gracias de antemano
pregunta Umesh Awasthi 19.01.2012 - 17:41

1 respuesta

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

Esto debería hacer el truco. Una reescritura para writer / user_id / username (nombre de usuario no se usa en la rewriterule, pero es necesariamente para que funcione. La segunda reescritura es la misma, excepto que agrega paginación.

EDITAR: agregue arg_username en el código de arriba.

    
respondido por el Rob Vermeer 19.01.2012 - 19:43

Lea otras preguntas en las etiquetas