Cambiar la URL del enlace del logo
Estoy intentando cambiar la URL del logo del sitio a "mywebsite.com/side2", pero no está funcionando, ¿alguien puede decirme dónde está el error en el código siguiente?
add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {
return home_url( 'side2' );
}
El filtro login_headerurl
se utiliza para cambiar la URL del logotipo en la página de inicio de sesión, según el Codex.
Para cambiar la URL del logotipo de tu página de inicio, deberás revisar el archivo header.php
de tu tema. Tu logotipo y su enlace están incluidos allí. Dependiendo de tu tema, la forma en que se genera tu URL puede variar.
Accede a tu archivo header.php
desde Apariencia > Editor
en el panel de administración y busca la línea que contiene el logotipo. Allí puedes cambiarlo por lo que desees.

Ok, pero necesito cambiar el enlace en function.php, porque el enlace variará según el perfil del usuario. El script anterior es solo la parte que cambia la url.

Puedes cambiarlo según el usuario en headers.php
también. Si el desarrollador del tema simplemente está usando bloginfo(url)
para mostrar la URL, no hay forma de cambiarlo usando functions.php
, a menos que cambies TODA la función bloginfo()
, o cualquier otra función utilizada.

Si el autor del tema está usando bloginfo('url')
para mostrar la URL, entonces puedes hacer lo siguiente.
bloginfo('url')
es un envoltorio para echo get_bloginfo('url')
, que a su vez es un envoltorio para home_url()
, y este último es un envoltorio para get_home_url()
. El código de esa función está disponible aquí.
Como se puede ver, hay un filtro disponible al final de la función que puedes usar para cambiar el valor de la URL de inicio.
Editado para que los filtros solo se activen cuando tanto home_url
como custom_logo
son llamados.
add_filter( 'home_url', 'wpse_106269_home_url', 10, 4 );
function wpse_106269_home_url( $url, $path, $orig_scheme, $blog_id ) {
add_filter( 'custom_logo', 'wpse_106269_custom_logo', 10, 2 );
}
function wpse_106269_custom_logo( $html, $blog_id ) {
//* Eliminar el filtro
remove_filter( 'custom_logo', 'wpse_106269_custom_logo', 10, 2 );
//* Usar str_replace() para cambiar el enlace
return str_replace( $old_url, $new_url, $html );
}

¡Buena función en caso de que quiera cambiar cada bloginfo('url')
en su sitio web para que la URL antigua sea inaccesible!

Puedes usar esta función para cambiar la URL del logo en WordPress.
Simplemente agrega este código en el archivo function.php
//cambiando la url del logo para redireccionar
function mb_login_url() { return home_url(); }
add_filter( 'login_headerurl', 'mb_login_url' );
// cambiando el texto alternativo del logo para mostrar el nombre de tu sitio
function mb_login_title() { return get_option( 'blogname' ); }
add_filter( 'login_headertitle', 'mb_login_title' );
Para cambiar el Logo en la página de login del administrador
function my_login_logo_one() {
?>
<style type="text/css">
body.login div#login h1 a {
background-image: url(http://sitetitle.com/logo-1.png);
}
</style>
<?php }
add_action( 'login_enqueue_scripts', 'my_login_logo_one' );

En caso de que alguien más esté enfrentando el mismo problema, hace un tiempo creé el plugin SMNTCS Custom Logo Link, que funciona con todos los temas que tienen más de 100.000 instalaciones activas. Si el tema que estás usando no está entre esos temas, simplemente crea un issue en https://github.com/nielslange/smntcs-custom-logo-link/issues y estaré encantado de extender el plugin.

Al final opté por el siguiente enfoque basado en Javascript que funcionó para mis propósitos. Estoy usando el tema de https://theme.co/x. Instalé el plugin Insert Headers and Footers y luego agregué el siguiente código Javascript (sección Footer):
<script>
document.getElementsByClassName('x-brand')[0].setAttribute("href", "https://example.com");
</script>
Necesitarás cambiar el 'x-brand'
para que apunte a la clase del elemento href del logo específico del tema que estés usando.

Creo que sería mejor arreglar la página. Me preocuparía que el navegador empezara a cargar la imagen antigua, o que hubiera un breve salto en el diseño si no tienes atributos de altura y anchura en ellas. Debe haber una forma de cambiarlo en tu tema.

Yo también quería hacer eso, basado en el tema _underscore. No pude encontrar una forma predeterminada. Así que usé el inspector web para encontrar el div que contiene el logo del encabezado.
Está en wp-includes/theme.php, línea 1802 en mi instalación.
Cambié
'<div id="wp-custom-header" class="wp-custom-header">%s</div>'
a
'<div id="wp-custom-header" class="wp-custom-header"><a href="https://www.theURLToYourHomepa.ge">%s</a></div>'
y funciona para todas las páginas.
No apuesto a que esto sea muy ortodoxo, y espero escuchar cualquier comentario al respecto.

No es recomendable en absoluto modificar los archivos núcleo de WordPress (como el que estás sugiriendo). Cada vez que WordPress se actualiza existe la posibilidad de que estos cambios se sobrescriban por completo con el código actualizado que publique el equipo de desarrollo de WordPress Core.

Sí, lo sé. Dije que no es lo más ortodoxo. Pero es aún más recomendable encontrar una solución a este problema. No ayuda decir "no puedes hacer eso pero no sé cómo hacerlo"... Ninguna otra solución en esta página funcionó para mí. Y si existe la posibilidad de tener que hacerlo después de cada actualización, pues así será. Solo toma unos 30 segundos.
