Lógica condicional para verificar el icono del sitio

4

De lo que he leído ( Compruebe si Favicon está configurado en Personalizador y otros), parece que comprobar si el icono de un sitio está configurado en un tema debería ser fácil. No parece estar funcionando para mí. Me gustaría tener un conjunto de iconos de sitio predeterminados en mi tema que se pueden sobrescribir si un usuario carga un icono de sitio. El código que tengo ahora es:

  <?php
  if( false === get_option( 'site_icon', false ) ) {
  ?>
  <link rel="apple-touch-icon" sizes="57x57" href="<?php echo get_stylesheet_directory_uri(); ?>/icons/apple-icon-57x57.png">
  <!-- MORE ICONS OUTPUT HERE -->
  <?php
  }
  ?>

Aunque esto no parece estar funcionando. Independientemente de si un icono de sitio está configurado o no, no se mostrará. Además, incluso después de eliminar un icono de la sección Personalizador, permanece en el sitio (incluso después de borrar el sitio y el caché local).

Todo lo que he leído dice que el ícono del sitio debería funcionar sin ningún soporte de tema, pero no parece funcionar para mí. ¿Alguna idea o algo que pueda faltar?

    
pregunta Andrew 27.06.2017 - 22:38

2 respuestas

3

Existe una función especial para verificar si el icono del sitio está configurado, a saber, función has_site_icon() .

Así que puedes intentar:

add_action( 'wp_head',    'wpse_default_site_icon', 99 );
add_action( 'login_head', 'wpse_default_site_icon', 99 );

function wpse_default_site_icon()
{
    if( ! has_site_icon()  && ! is_customize_preview() )
    {
        // your default icons here
    }
} 

El caso cuando se establece el ícono del sitio, ya se maneja mediante:

add_action( 'wp_head',    'wp_site_icon',  99    );
add_action( 'login_head', 'wp_site_icon',  99    );
    
respondido por el birgire 28.06.2017 - 11:09
2

Verifiquemos si el ícono del sitio está configurado, y luego lo imprimiremos:

<?php if (get_option('site_icon')) { ?>
    <link rel="apple-touch-icon" href="<?php echo wp_get_attachment_image_url(get_option('site_icon'),'full') ?>"><?php
} else { ?>
    <link rel="apple-touch-icon" sizes="57x57" href="<?php echo get_stylesheet_directory_uri(); ?>/icons/apple-icon-57x57.png"><?php
} ?>

Estoy usando esto en el momento en que escribo esta respuesta, y funciona. De esta manera, puedes depurar para ver si hay un ícono de sitio en tus opciones o no, ya que este código generará algo de todos modos.

ACTUALIZACIÓN

Como se menciona en el comentario de @birgire, mi respuesta se adapta mejor si va a usar este código en otro lugar que no sea el encabezado, o su tema no tiene una función wp_head .

Si lo hace, entonces:

  

Se agrega automáticamente de forma predeterminada a través de la función wp_site_icon()   a través de las acciones wp_head/login_head .

    
respondido por el Jack Johansson 27.06.2017 - 23:09

Lea otras preguntas en las etiquetas