Cómo cambiar la URL de autor en WordPress

WordPress tienes muchas cosas buenas pero también algún picadillo, y uno de ellos es la URL de autor, que tiene dos errores, y uno de ellos supone un grave problema de seguridad: muestra el nombre de acceso del usuario en vez del nombre visible u otro.

El otro error, menos grave, es que no puedes cambiar la base de la estructura del enlace, me explico …

Como ya sabrás, en Ajustes -> Enlaces permanentes, puedes modificar la base de la URL de los archivos de categorías y etiquetas, de category y tag a lo que quieras.

url base de categorias y etiquetas

De este modo, la típica url del tipo misitio.es/category/mi-seccion/ puedes cambiarla, por ejemplo, a misitio.es/seccion/mi-seccion o de misitio.es/tag/mi-etiqueta/ a misitio.es/etiqueta/mi-etiqueta/.

Pero WordPress no nos ofrece ningún modo de cambiar el archivo de autor del estándar misitio.es/author/username/ a otra cosa, como podría ser misitio.es/perfil/ID_de_autor/, por ejemplo.

Como he dicho, este error es menos grave, meramente estético. Lo gordo es lo otro, que en la URL de un autor se muestre el nombre real de usuario (username) para acceder, con lo que ya estás «regalando» información de la mitad de lo que alguien podría necesitar para acceder sin permiso a tu sitio.

Da igual si pones tu nombre y apellidos, un alias o eliges un nombre visible, siempre se generará la URL con tu nombre de usuario que no puedes cambiar salvo modificándolo manualmente en la base de datos.

perfil de autor

Así, si haces clic en el nombre de autor en la línea de información de una entrada, se mostrará el nombre visible elegido, pero te llevará a la URL de autor, en la que podrás ver su nombre de usuario de acceso real, sabiendo ya el 50% de la información para poder intentar acceder en su lugar.

Si, es grave, pero tiene solución, de hecho hay varias.

De hecho ayer mismo me avisó por Twitter un lector, Joan Morci, de este grave problema de seguridad, sobre lo que ya ha publicado él mismo la solución en su blog, pero he encontrado algún recurso más que puede ayudar.

Cambiar la URL de autor en WordPress con código

Si queremos solucionar estos dos errores de golpe es sencillo. Solo tenemos que añadir el siguiente código a nuestro plugin de utilidades:

//Cambiar author/username a perfil/ID_de_usuario
function change_author_permalinks() {
  global $wp_rewrite;
   // Primero cambiamos el valor de la base de author a lo que queramos
   $WP_rewrite->author_base = 'perfil';
  $wp_rewrite->flush_rules();
}

add_action('init','change_author_permalinks');

add_filter('query_vars', 'users_query_vars');
function users_query_vars($vars) {
    // ahora añadimos el ID de usuario a la lista de variables válidas
    $new_vars = array('perfil');
    $vars = $new_vars + $vars;
    return $vars;
}

//Y finalmente generamos la regla de escritura de la URL con los valores anteriores 
function user_rewrite_rules( $wp_rewrite ) {
  $newrules = array();
  $new_rules['perfil/(\d*)$'] = 'index.php?author=$matches[1]';
  $wp_rewrite->rules = $new_rules + $wp_rewrite->rules;
}
add_filter('generate_rewrite_rules','user_rewrite_rules');

En este ejemplo lo que hacemos es, primero, cambiar la base de la URL de author a perfil (que por supuesto puedes cambiar a lo que quieras) y luego usar el ID de usuario como nombre de autor en la URL, lo que es la mejor opción, pues es único siempre, no como el nombre visible, alias u otros, que podrían coincidir y supondría otro problema.

De este modo, un usuario cuyo nombre de usuario sea admin, con lo que su url de autor habría sido por defecto misitio.es/author/admin/ pasaría a tener una url de autor del tipo misitio.es/perfil/12/ (siendo 12 su ID de usuario único).

Por supuesto, nadie podrá usar el ID como nombre de usuario para intentar acceder a WordPress, simplemente no funciona, con lo que hemos solucionado el problema.

Hay por ahí otros códigos para cambiar el nombre de usuario pero solo valen para hacerlo uno a uno, con este código los cambias todos, y a lo único interesante que puedes hacerlo sin conflictos.

Cambiar la URL de autor en WordPress con plugins

Claro que sí, también podemos hacerlo con plugins, no sufras si eres de los que aún le da dentera y temblores tocar código.

Edit Author Slug

Plugin muy completo, que te permite cambiar tanto la base de URL de autor como la base de uso para los nombres de autores. De este modo puedes sustituir author por lo que quieras, y usar otra base para los nombres de autor, como por ejemplo la combinación de nombre-apellido, alias, solo nombre, nombre visible, ID, etc.

edit author slug

En campo Author Base cambias author por lo que quieras y luego, más importante, en Bulk Update Author Slugs, si activas la casilla Bulk Update, te permite definir el nombre a usar en las URLs en vez del nombre de usuario real.

 

Además también te permite cambiar las URLs de autor  uno a uno si quieres, de manera totalmente manual, a lo que quieras.

edit author url unique wordpress

SF Author Url Control

Este es similar al anterior pero algo más limitado. La parte buena es que para cambiar la URL base de author a lo que quieras no tienes una página de opciones enorme sino que se añade un campo más a Ajustes -> Enlaces permanentes, justo debajo de donde haces lo mismo para categorías y etiquetas, algo totalmente lógico e intuitivo.

sf author url control

En lo que no llega al nivel del anterior plugin es que no puedes cambiar automáticamente las URLs de los autores sustituyendo el username por otra cosa, sino que tienes que hacerlo uno a uno, o el mismo usuario por su cuenta.

Creo que huelga decir que esto último no es nada recomendable, porque hay mucho loco por ahí que estaría todo el día mareando con su nombre de usuario.

author url control usuario


 

En fin, que el asunto creo que queda resuelto, ya sea mediante el código (creo que la mejor opción con enorme diferencia), o con el plugin Edit User Slug, haciendo el cambio en masa, pero con el fallo de no poder usar el ID, que sería lo mejor, ya que como he dicho con el resto de posibilidades, al ser modificables por los usuarios, podría haber coincidencias y sus consiguientes problemas.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(10 votos, promedio: 4.6)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

9 comentarios en “Cómo cambiar la URL de autor en WordPress”

  1. ¿Puedes por favor repasar el código? A mi me da un error en la línea `$WP_rewrite->author_base = ‘perfil’;`
    Warning: Creating default object from empty value in C:wampwwwradiowp-contentthemesmh-newsdesk-litefunctions.php on line 5
    Creo que tiene que ver con el hecho de que WP está en mayúsculas. De hecho, el error desaparece cuando la pones en minúsculas.
    No obstante, a mi no me ha funcionado. Cambia a «perfil» pero no muestra el ID sino el nombre de usuario.
    Un saludo.

  2. Arkantos Khan

    Hola Fernando, como tal vez esté relacionado con esto, aprovecho y te consulto algo. Para mi sitio, cuando buscas en Google y aparece el resultado estructurado (Portada > Categorías > Tags importantes), en el nombre de la portada pone el nombre de Autor y no «Inicio» o «Portada» como debería ser. ¿Cuál de las opciones que recomiendas en este post me ayudaría a solucionar eso en los resultados de búsqueda de Google?

  3. Hola, a mi no funciona. Lo he probado (borrando la cache) y se sigue viendo el nombre. He visto en el comentario de Miguel lo de WP y lo puse en minúsculas pero tampoco funciona. Lo instalé en cinco sitios y no funcionó en cuatro y el otro lo tuve que quitar porque me dejaba la pantalla en blanco. Todo los temas son casi iguales aunque ahora mismo no pondría la mano en el fuego porque es posible que existan ligeras diferencias en los plugins.

  4. Hola.
    Antes de nada, miles de gracias por compartir tus conocimientos. Me ayudas en muchas cosillas.
    Referente a este post… A mí tampoco me funciona, no da señales de ello… Ni por activa ni por pasiva 🙁

  5. Pues a mi de traca 😉
    Ahora tengo no una, sino dos páginas donde muestro mi nombre de autor.
    Una, la ya consabida /author/admin y la otra la que sí funciona con el código de /perfil/id
    He borrado caché y eso pero parece que ambas conviven.
    ¡Glups!

  6. Me autorespondo y respondo en parte…
    Con la opción de Miguel, sacado el código a un plugin, al menos, en mi caso, funciona correctamente.
    La línea que está mal es:
    $wp_rewrite->author_base = »;
    Con «wp» en minúscula como dice Miguel.

    Saludos

  7. Hola Fernando, serás que se puede actualizar el código? como dicen muchos aquí no funciona bien ya que luego del author_base = ‘perfil’; sale el nombre de usuario del admin. Otra solución es por la base de datos pero esto borra el link del perfil.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Ir arriba Ir al contenido