Cambiar la URL del enlace del logo

16 feb 2017, 17:56:24
Vistas: 60.5K
Votos: 3

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' );
}
4
Comentarios

Hola, ¿estás intentando cambiar la URL del logo de la página de inicio o del panel de inicio de sesión?

Johansson Johansson
16 feb 2017 18:03:47

El logo de la página de inicio

Pavanello Pavanello
16 feb 2017 18:42:10

@JackJohansson Descubrí cuál es el problema, la función login_headerurl es para la página de inicio de sesión y lo que quiero es para el logo principal del sitio, ¿sabes cuál es la función para la URL del logo principal del sitio? ¡Tenías razón!

Pavanello Pavanello
16 feb 2017 19:20:15

Sí, acabo de publicar una respuesta sobre eso. Copia la parte de tu header.php que genera la URL a tu pregunta, y actualizaré mi respuesta.

Johansson Johansson
16 feb 2017 20:03:20
Todas las respuestas a la pregunta 8
2

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.

16 feb 2017 18:47:34
Comentarios

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.

Pavanello Pavanello
16 feb 2017 18:54:57

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.

Johansson Johansson
16 feb 2017 19:05:24
2

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 );
}
16 feb 2017 20:11:31
Comentarios

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

Johansson Johansson
16 feb 2017 20:13:27

Buen punto. Modifiqué la respuesta para que solo funcione cuando se llaman custom_logo() y home_url() en conjunto

Nathan Johnson Nathan Johnson
16 feb 2017 21:39:51
1

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' );
28 ago 2017 19:25:41
Comentarios

Esto es solo para el logo en la página de inicio de sesión, no para el logo del encabezado como mencionaba el OP.

YourManDan YourManDan
14 may 2024 23:40:35
0

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.

6 abr 2020 16:38:44
0

La forma más sencilla es agregar este código jQuery

jQuery(document).ready(function($){  
        $("a.logo-class").attr("href", "https://google.com");
});
7 jun 2020 08:47:50
2

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.

24 ago 2021 21:08:31
Comentarios

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.

Rup Rup
27 ago 2021 12:41:57

De acuerdo. No es la solución ideal, pero pasé aproximadamente una hora buscando una forma de cambiarlo en el tema, incluyendo revisar el código del tema, y no pude encontrar una manera.

Adrian Laurenzi Adrian Laurenzi
30 ago 2021 18:17:37
1
-1

Puedes utilizar get_page_by_path de la siguiente manera:

add_filter( 'login_headerurl', 'custom_loginlogo_url' );
function custom_loginlogo_url($url) {

  return get_page_by_path( 'side2' );
}
16 feb 2017 18:07:37
Comentarios

¡usar get_page_by_path como sugeriste arriba no funcionó!

Pavanello Pavanello
16 feb 2017 18:51:14
2
-1

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.

6 feb 2025 21:55:34
Comentarios

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.

Howdy_McGee Howdy_McGee
6 feb 2025 22:17:43

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.

bastos bastos
12 feb 2025 07:58:29