WordPress中文开发手册

  1. Home
  2. WordPress中文开发手册
  3. WordPress主题开发
  4. 主题功能
  5. 核心支持的功能
  6. 自定义Logo

自定义Logo

什么是自定义Logo?

使用自定义Logo可以让网站所有者上传他们网站的图片,这些图片可以放在他们网站的顶部。 它可以从您的管理面板中的外观>标题上传。 应该使用add_theme_support()将自定义徽标支持首先添加到您的主题中,然后the_custom_logo在主题中调用。 自定义Logo是可选的,但如果主题作者在其主题中包含Logo,则应使用此功能。

向您的主题添加自定义Logo支持

要在主题中使用自定义徽标,请将以下内容添加到您的functions.php文件中:

add_theme_support( 'custom-logo' );

启用自定义Logo支持时,可以使用数组将参数传递给add_theme_support()函数来配置五个参数:

function themename_custom_logo_setup() {
    $defaults = array(
        'height'      => 100,
        'width'       => 400,
        'flex-height' => true,
        'flex-width'  => true,
        'header-text' => array( 'site-title'<span%20class="token punctuation">, 'site-description' ),
    );
    add_theme_support( 'custom-logo'<span%20class="token punctuation">, $defaults );
}
add_action( 'after_setup_theme'<span%20class="token punctuation">, 'themename_custom_logo_setup' );

使用after_setup_theme钩子,以便在主题加载后注册自定义Logo支持。

  • height 预期Logo高度(以像素为单位) 自定义Logo还可以使用内置的图像大小,如缩略图,或使用add_image_size()注册自定义大小。
  • width 预期Logo宽度(以像素为单位) 自定义Logo还可以使用内置的图像大小,如缩略图,或使用add_image_size()注册自定义大小。
  • flex-height 是否允许灵活的高度。
  • flex-width 是否允许灵活的宽度。
  • header-text 要隐藏的元素的类。 它可以在这里传递一个类名称数组,用于构成标题文本的所有元素,可以由Logo代替。

在主题中显示自定义Logo

可以使用the_custom_logo()函数在主题中显示自定义徽标。 但是建议将代码包装在一个function_exists()调用中,以保持与旧版本WordPress的向后兼容性,如下所示:

if ( function_exists( 'the_custom_logo' ) ) {
    the_custom_logo();
}

通常,Logo会添加到主题的header.php文件中,但它也可以在其他地方。

如果要获取当前的标识URL(或使用自己的标记)而不是默认标记,则可以使用以下代码:

$custom_logo_id = get_theme_mod( 'custom_logo' );
$logo = wp_get_attachment_image_src( $custom_logo_id , 'full' );
if ( has_custom_logo() ) {
        echo '<img src="'<span%20class="token punctuation">. esc_url( $logo[0] ) .'">'<span%20class="token punctuation">;
} else {
        echo '<h1>'<span%20class="token punctuation">. esc_attr( get_bloginfo( 'name' ) ) .'</h1>'<span%20class="token punctuation">;
}

自定义Logo模板标签

要管理在前端显示自定义Logo,可以使用以下三个模板标签:

  • get_custom_logo() - 返回自定义Logo的标记。
  • the_custom_logo() - 显示自定义Logo的标记。
  • has_custom_logo() - 返回一个布尔值true/false,是否设置了自定义徽标。