用于检查站点图标的条件逻辑

时间:2017-06-27 作者:Andrew

从我读到的(Check if Favicon is set in Customizer 检查主题中是否设置了站点图标似乎很容易。这似乎对我不起作用。我想在我的主题中设置一组默认的站点图标,如果用户上载站点图标,这些图标可以被覆盖。我现在的代码是:

  <?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
  }
  ?>
但这似乎不起作用。无论是否设置了站点图标,它都不会输出。此外,即使在从Customizer部分删除图标后,它仍保留在站点上(即使在清除站点和本地缓存后)。

我读到的所有内容都说,网站图标应该在没有任何主题支持的情况下工作,但它似乎对我不起作用。有什么见解或我可能遗漏的东西吗?

2 个回复
最合适的回答,由SO网友:birgire 整理而成

有一个特殊功能可以检查是否设置了站点图标,即has_site_icon() 作用

因此,您可以尝试:

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
    }
} 
设置站点图标时,已由以下人员处理:

add_action( \'wp_head\',    \'wp_site_icon\',  99    );
add_action( \'login_head\', \'wp_site_icon\',  99    );

SO网友:Johansson

让我们检查是否设置了站点图标,然后打印它:

<?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
} ?>
我在写这个答案的时候正在使用这个,它很有效。通过这种方式,您可以调试以查看选项中是否有站点图标,因为此代码无论如何都会输出一些内容。

更新

正如@birgire在评论中提到的那样,如果您打算在标题以外的其他地方使用此代码,或者您的主题没有wp_head 作用

如果有,则:

默认情况下,通过wp_site_icon() 功能通过wp_head/login_head 行动。

结束

相关推荐

从Options表中的数据创建阵列

大家好,我正试图从wordpress的选项表中的数据创建一个数组。我的数据都以相同的方式开始,然后是字段信息的名称。有没有办法提取所有这些数据并使用WordPress命令创建数组?或者,唯一的方法是使用适当的“SQL查询”,我想很多人都说在WordPress中不要这样做?