Lógica condicional para verificar o ícone do site

4

Do que eu li ( Verifique se o Favicon está definido em Personalizador e outros), parece verificar se um ícone de site é definido em um tema deve ser fácil. Não parece estar funcionando para mim. Gostaria de ter um conjunto de ícones de sites padrão definidos no meu tema que possam ser sobrescritos se um usuário fizer o upload de um ícone de site. O código que tenho agora é:

  <?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
  }
  ?>

Isso não parece estar funcionando. Independentemente de o ícone do site estar definido ou não, ele não será exibido. Além disso, mesmo após a exclusão de um ícone da seção Personalizador, ele permanece no site (mesmo depois de limpar o site e o cache local).

Tudo que li diz que o ícone do site deve funcionar sem suporte a temas, mas parece que não está funcionando para mim. Alguma idéia ou algo que eu possa estar perdendo?

    
por Andrew 27.06.2017 / 22:38

2 respostas

3

Existe uma função especial para verificar se o ícone do site está definido, ou seja, o % funçãohas_site_icon() .

Você pode tentar:

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
    }
} 

O caso quando o ícone do site está definido já é tratado por:

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

Vamos verificar se o ícone do site está definido e, em seguida, imprimi-lo:

<?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
} ?>

Estou usando isso no momento em que escrevo esta resposta e funciona. Dessa forma, você pode depurar para ver se há um ícone de site em suas opções ou não, já que esse código gerará algo de qualquer maneira.

UPDATE

Como mencionado no comentário de @birgire, minha resposta é a melhor se você vai usar este código em algum lugar diferente do cabeçalho, ou o seu tema não possui a função wp_head .

Em caso afirmativo, então:

  

É adicionado automaticamente por padrão através da função wp_site_icon()   através das ações wp_head/login_head .

    
por Jack Johansson 27.06.2017 / 23:09