the_archive_title tag plugin name manager keywords data content colocar wordpress url-rewriting

tag - Eliminar el prefijo del autor en WordPress



the_archive_title (2)

¿Cómo puedo eliminar el prefijo del autor en un sitio web de WordPress? He hecho un rápido Google, pero solo he encontrado redireccionamientos de htaccess a los que no quiero recurrir.

Para aclarar quiero convertir esto:

http://www.domain.com/author/cameron/

dentro de esto

http://www.domain.com/cameron/

No quiero utilizar ningún redireccionamiento de ningún tipo, sino el código PHP real que puedo usar en el archivo functions.php, ya que quiero que todos los enlaces en el sitio que usan las cosas del autor se actualicen automáticamente sin mantener enlaces originales y luego redirigiendo a la nueva.

Gracias


Básicamente, necesita agregar reglas de reescritura de WP para hacer coincidir los nombres de cada uno de sus usuarios en la forma deseada. Esto es lo que hace la Base WP No Categoría para las categorías, por lo que la mayoría del código en mi respuesta se adapta de ese complemento.

La parte principal del complemento es una función que se engancha en el filtro author_rewrite_rules y reemplaza las reglas de reescritura del autor. Esto recupera todos los nombres de usuario y agrega una regla de reescritura específicamente para cada usuario (el siguiente no manejará los feeds, así que mira la fuente base WP No Category si la necesitas).

add_filter(''author_rewrite_rules'', ''no_author_base_rewrite_rules''); function no_author_base_rewrite_rules($author_rewrite) { global $wpdb; $author_rewrite = array(); $authors = $wpdb->get_results("SELECT user_nicename AS nicename from $wpdb->users"); foreach($authors as $author) { $author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = ''index.php?author_name=$matches[1]&paged=$matches[2]''; $author_rewrite["({$author->nicename})/?$"] = ''index.php?author_name=$matches[1]''; } return $author_rewrite; }

La otra parte clave del complemento es una función que se engancha en el filtro author_link y elimina la base de ''autor'' de la URL devuelta.

add_filter(''author_link'', ''no_author_base'', 1000, 2); function no_author_base($link, $author_id) { $link_base = trailingslashit(get_option(''home'')); $link = preg_replace("|^{$link_base}author/|", '''', $link); return $link_base . $link; }

Vea esta esencia: http://gist.github.com/564465

Esto no maneja la redirección de las URL de autor de estilo antiguo. De nuevo, consulte la fuente base de WP No Categoría si necesita hacer eso.


Asegúrese de reemplazar este fragmento de código dentro de no_author_base_rewrite_rules ():

foreach($authors as $author) { $author_rewrite["({$author->nicename})/page/?([0-9]+)/?$"] = ''index.php?author_name=$matches[1]&paged=$matches[2]''; $author_rewrite["({$author->nicename})/?$"] = ''index.php?author_name=$matches[1]''; $rules = get_option( ''rewrite_rules'' ); if ( ! isset( $rules[''({$author->nicename})/?$''] ) ) { global $wp_rewrite; $wp_rewrite->flush_rules(); } }

Para que Wordpress actualice la lista de reescritura. (de lo contrario, algunos enlaces pueden no funcionar).