¿Estás buscando una forma de cambiar el slug de la URL del autor? Este fragmento cambiará el slug predeterminado, mysite.com/author/name, a mysite.com/profile/name. Sin embargo, puedes cambiarlo a lo que desees.
Instrucciones:
- Agrega este código al archivo functions.php de tu tema o a un plugin específico para tu sitio.
- Cambia
profileen la línea 4 por el nombre que desees.
add_action('init', 'cng_author_base');
function cng_author_base() {
global $wp_rewrite;
$author_slug = 'profile'; // change slug name
$wp_rewrite->author_base = $author_slug;
}
Nota: Si es la primera vez que agregas fragmentos de código en WordPress, consulta nuestra guía sobre cómo copiar y pegar fragmentos de código correctamente en WordPress, para no dañar accidentalmente tu sitio.
Si le gustó este fragmento de código, considere revisar nuestros otros artículos en el sitio como: Las 9 mejores herramientas de SEO para aumentar el tráfico de su sitio web, ¡RÁPIDO!
¡Ni tu código ni el mío funcionarán! ! ! ! ¡Es molesto!……
// Cambiar la base del autor para la URL del autor.
function custom_author_base() {
global $wp_rewrite;
$author_slug = ‘@’; // Establecer la base del autor a ‘@nombredeusuario’
$wp_rewrite->author_base = $author_slug;
}
add_action( ‘init’, ‘custom_author_base’ );
// Reescribir la URL del autor a una nueva estructura de URL.
function custom_author_rewrite_rules( $author_rewrite ) {
$author_new_rules = array(
‘@([^/]+)/?$’ => ‘index.php?author_name=$matches[1]’
);
$author_rewrite = array_merge( $author_new_rules, $author_rewrite );
return $author_rewrite;
}
add_filter( ‘author_rewrite_rules’, ‘custom_author_rewrite_rules’ );
// Redirigir la URL antigua del autor a la nueva estructura de URL.
function custom_author_redirect() {
if ( is_author() && strpos( $_SERVER[‘REQUEST_URI’], ‘/author/’ ) !== false ) {
wp_redirect( home_url( str_replace( ‘/author/’, ‘/’, $_SERVER[‘REQUEST_URI’] ) ), 301 );
exit();
}
}
add_action( ‘template_redirect’, ‘custom_author_redirect’ );
Hola, ¿es posible cambiar el slug del autor solo para tipos de publicación personalizados usando una condición if?
Gracias
Este código es para cambiar la base del autor, no el slug del autor.
Esto no es para los nombres de autores individuales, sino para cambiar el slug /author/ por otra cosa, como /profile/. El resultado final sería /profile/nombredeautor
¡¡Gracias!!
¡¡Muchas gracias!!
gracias
gracias
¿Recuerdas la pregunta de Mike Kennedy?
¿Cómo puedes tener solo site.com/nombre-de-autor/ ?
Si estableces author_slug = '' ;
esto funcionará para las páginas de autor, pero en mi caso ahora obtengo errores 404 no encontrado para las páginas normales. Parece que un slug de autor vacío rompe la reescritura para las páginas normales.
¿Alguien tiene una solución?
Lo que quizás quieras intentar es ir a "Enlaces permanentes" dentro de la configuración y luego hacer clic en "Guardar cambios" para actualizar las reglas de reescritura.
[…] a Kevin Chard por lo genial […]
He podido cambiar la estructura de permalink de author_base con código similar al anterior, pero he creado un rol personalizado y me pregunto si podría tener 2 author_base diferentes según el rol del usuario. La estructura predeterminada para administradores, autores, etc. (/author/nombredeautor) y otra para el nuevo rol de usuario (/gift-registry/nombredeautor).
Ryan
¡Gracias!
@wpsnipp:disqus ¿es posible crear slugs de autor personalizados basados en roles de usuario?
agrega $wp_rewrite->flush_rules()
al final de la función funcionará sin 404 🙂
gracias bro
Coloqué esto dentro de functions.php y cambió el slug, sin embargo, obtengo un 404 cuando visito el nuevo slug. ¿Alguna sugerencia? Gracias
Hola Zach, si sigues teniendo problemas, podrías probar este plugin, ya que no deberías tener ningún problema.
http://wordpress.org/extend/plugins/author-slug/
Hola Kevin,
Gracias por la sugerencia. Sin embargo, vi ese plugin y me encantaría averiguar cómo usarlo sin un plugin; estoy construyendo un sitio muy grande y estoy tratando de reducir la cantidad de plugins.
Gracias,
Zach
Hola Zach, podrías simplemente sacar el código del plugin y colocarlo dentro de tu functions.php y eso funcionará bien.
Para cualquiera que tenga el mismo problema... simplemente actualiza los enlaces permanentes (ir a Configuración->Enlaces permanentes los actualiza)