Multiple image logo for theme

时间:2017-02-18 作者:Tree Nguyen

我的网站有一个徽标,该徽标有两种状态(即在线和离线)。他们每个人都有一个将被上传到媒体的图像。我试图实现的是,当鼠标悬停时,徽标的状态会发生变化(这很容易做到)。然而,为了方便地跟踪徽标图像,我正在考虑通过add\\u theme\\u support允许主题支持定制的\\u徽标。这起到了一半的作用,这意味着我目前只能控制图像的一部分。是否有任何方法可以允许添加来自主题定制(自定义徽标)的2个不同图像并显示它们?提前感谢

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

我假设在线和离线都是指徽标的活动状态。我认为有几个选项可供您使用。前两个选项可以在主题中使用,然后只需更改目录中的图像文件。

选项一(不使用WP):

您可以简单地使用透明度。对徽标应用透明效果,然后悬停,使不透明度完全。E、 g:

.logo {
    opacity: 0.75;
}

.logo:hover {
    opacity: 1;
}

// If you want to use SASS:

.logo {
    opacity: 0.75;

    &:hover {
        opacity: 1;
    }
}
选项二(不使用WP):如果需要使用图像而不是悬停效果,则可以尝试以下操作(再次使用类):

.logo {
    background-image: url(\'path/to/your-off-image.jpg\');
    background-repeat: no-repeat;
    background-size: cover;
    width: 200px; // Have to set a width/height in order for the background to appear
    height: 200px;
}

.logo:hover {
    background-image: url(\'path/to/your-on-image.jpg\');
    background-repeat: no-repeat;
    background-size: cover;
}

// If you want to use SASS:

.logo {
    background-image: url(\'path/to/your-off-image.jpg\');
    background-repeat: no-repeat;
    background-size: cover;
    width: 200px; // Have to set a width/height in order for the background to appear
    height: 200px;

    &:hover {
        background-image: url(\'path/to/your-on-image.jpg\');
        background-repeat: no-repeat;
        background-size: cover;
    }
}
选项三(使用WP中的customiser):取自WP Customiser Docs

使用此选项,您必须使用以下内容注册设置:

function mytheme_customize_register( $wp_customize ) {
    //All our sections, settings, and controls will be added here

    $wp_customize->add_section( \'my_site_logo\' , array(
        \'title\'      => __( \'My Site Logo\', \'mytheme\' ),
        \'priority\'   => 30,
    ) );

    $wp_customize->add_control(
        new WP_Customize_Image_Control(
            $wp_customize,
            \'logo\',
            array(
               \'label\'      => __( \'Upload a logo\', \'theme_name\' ),
               \'section\'    => \'my_site_logo\',
               \'settings\'   => \'my_site_logo_id\' 
            )
        )
    );

}
add_action( \'customize_register\', \'mytheme_customize_register\' );
上述代码将添加到函数中。应该位于主题目录中的php文件。要检索图像,请执行以下操作:

get_theme_mod( \'my_site_logo_id\' );
然后,您必须打破使用内联样式输出徽标的两个不同选项的惯例,悬停。

请查看法典,查看您可能拥有的各种选项,以实现您的目标。

SO网友:David Lee

当您使用add_theme_support(\'custom-logo\'); 添加到Site Identity 节将使用WP_Customize_Image_Control 它不支持多个图像,只支持1个。

Simpler solution:

使用以下代码在一个WordPress控件下方添加第二个控件:

function your_theme_customizer_setting($wp_customize) {
// add a setting 
    $wp_customize->add_setting(\'your_theme_hover_logo\');
// Add a control to upload the hover logo
    $wp_customize->add_control(new WP_Customize_Image_Control($wp_customize, \'your_theme_hover_logo\', array(
        \'label\' => \'Upload Hover Logo\',
        \'section\' => \'title_tagline\', //this is the section where the custom-logo from WordPress is
        \'settings\' => \'your_theme_hover_logo\',
        \'priority\' => 8 // show it just below the custom-logo
    )));
}

add_action(\'customize_register\', \'your_theme_customizer_setting\');
将其用于get_theme_mod( \'your_theme_hover_logo\' ).

Complex Solution:

创建可接受2个图像的自定义控件。

SO网友:Anwer AR

默认情况下,您只能将一个图像作为徽标,但可以通过wp customizer中的另一个自定义控件将其扩展为两个。

另一种解决方案是使用一个包含活动和悬停状态的图像。并使用css position属性控制视图,就像使用图像图标的旧方法一样。

例如,可以将图像高度设置为100px。50px将默认包含徽标,另一个50px将包含徽标的悬停状态。然后默认显示图像的0px到50px高度,当其处于活动或悬停状态时,将背景位置更改为50px到100px。图像包装高度应为50pxoverflow:hidden

SO网友:Mark Kaplun

建议不要为此而打扰定制者。使用作为CSS文件一部分的徽标查找、覆盖和更改徽标要比试图找出将选项放置在何处来控制它更容易。编码和测试解决方案所需的工作量是没有理由的。另外一个优点是,所有代码都可以放在GIT下并跟踪徽标的更改。

(显然,正在分发的主题需要这样一个选项,但对于特定于站点的主题,这是一个无用的功能)

相关推荐

如何在LOGO下显示二十一六个他们的菜单?

我试着把WordPress改成216。我仔细检查了CSS,不知道主菜单怎么会显示在徽标(和网站名称)的右侧。无浮点,无内联块。我试图在菜单和徽标中添加浮动或显示为块,但根本不起作用。他们是怎么做到的?