如何在自定义徽标中添加css类?

时间:2016-06-16 作者:leymannx

我已启用custom-logo 用于我的主题,并将其打印为<?php the_custom_logo(); ?> 进入收割台。是否有机会直接向该图像添加更多类?默认情况下,它只附带custom-logo.

5 个回复
最合适的回答,由SO网友:Dhinju Divakaran 整理而成

WordPress提供了一个过滤器挂钩来定制徽标。钩子get_custom_logo 是过滤器。要更改徽标类,此代码可能会帮助您。

add_filter( \'get_custom_logo\', \'change_logo_class\' );


function change_logo_class( $html ) {

    $html = str_replace( \'custom-logo\', \'your-custom-class\', $html );
    $html = str_replace( \'custom-logo-link\', \'your-custom-class\', $html );

    return $html;
}
参考号:How to change wordpress custom logo and logo link class

SO网友:birgire

这里有一个建议,我们可以尝试通过wp_get_attachment_image_attributes 过滤器(未测试):

add_filter( \'wp_get_attachment_image_attributes\', function( $attr )
{
    if( isset( $attr[\'class\'] )  && \'custom-logo\' === $attr[\'class\'] )
        $attr[\'class\'] = \'custom-logo foo-bar foo bar\';

    return $attr;
} );
您可以根据需要调整课程。

SO网友:cjbj

当你发现自己the_custom_logo 依赖于get_custom_logo, 其本身称为wp_get_attachment_image 添加custom-logo 班后一个函数有一个过滤器,wp_get_attachment_image_attributes 可以使用它来操纵图像属性。

因此,您可以构建一个过滤器来检查custom-logo 有类,如果有,请添加更多类。

SO网友:Fred Bradley

只针对其他正在寻找解决方案的人。I found this, 我发现这比公认的答案要清楚得多。

此外,它还提供了更改链接URL的简单方法!只是比公认的答案更详细一点。

add_filter( \'get_custom_logo\', \'add_custom_logo_url\' );
function add_custom_logo_url() {
    $custom_logo_id = get_theme_mod( \'custom_logo\' );
    $html = sprintf( \'<a href="%1$s" class="custom-logo-link" rel="home" itemprop="url">%2$s</a>\',
            esc_url( \'www.somewhere.com\' ),
            wp_get_attachment_image( $custom_logo_id, \'full\', false, array(
                \'class\'    => \'custom-logo\',
            ) )
        );
    return $html;   
} 

SO网友:leymannx

我想我找到了一个答案。但我真的想知道这是不是正确的方法?不知怎么的,感觉有点脏:我只是从wp includes/general模板复制了与徽标相关的部分。php转换为我的主题函数。php并重命名函数,添加了一些自定义类:

function FOOBAR_get_custom_logo( $blog_id = 0 ) {
    $html = \'\';

    if ( is_multisite() && (int) $blog_id !== get_current_blog_id() ) {
        switch_to_blog( $blog_id );
    }

    $custom_logo_id = get_theme_mod( \'custom_logo\' );

    if ( $custom_logo_id ) {
        $html = sprintf( \'<a href="%1$s" class="custom-logo-link" rel="home" itemprop="url">%2$s</a>\',
            esc_url( home_url( \'/\' ) ),
            wp_get_attachment_image( $custom_logo_id, \'full\', false, array(
                \'class\'    => \'custom-logo FOO-BAR FOO BAR\', // added classes here
                \'itemprop\' => \'logo\',
            ) )
        );
    }

    elseif ( is_customize_preview() ) {
        $html = sprintf( \'<a href="%1$s" class="custom-logo-link" style="display:none;"><img class="custom-logo"/></a>\',
            esc_url( home_url( \'/\' ) )
        );
    }

    if ( is_multisite() && ms_is_switched() ) {
        restore_current_blog();
    }

    return apply_filters( \'FOOBAR_get_custom_logo\', $html );
}

function FOOBAR_the_custom_logo( $blog_id = 0 ) {
    echo FOOBAR_get_custom_logo( $blog_id );
}