我为主题启用了custom-logo,并在标题中打印了<?php the_custom_logo(); ?>。是否有机会直接在此图像中直接添加更多类?默认情况下,它仅带有custom-logo

#1 楼

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


参考:如何更改wordpress自定义徽标和徽标链接类

评论


谢谢,这很完美!我越看这个,就越让我难过。 get_custom_logo()应该接受一串类,并且不需要过滤器。它也应该选择是否输出HTML链接。

–亚当·帕特森(Adam Patterson)
20-3-30在3:38



#2 楼

这是一个建议,建议我们如何尝试通过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;
} );


根据需要调整类。

评论


谢谢,您的解决方案效果最好。

– S1awek
20 Jan 17 '20在10:18

#3 楼

如您所见,the_custom_logo依赖于get_custom_logo,后者本身调用wp_get_attachment_image来添加custom-logo类。后一个功能有一个过滤器wp_get_attachment_image_attributes,您可以使用它来处理图像属性。

因此,您可以做的是构建一个过滤器,检查custom-logo类是否在那里,如果是,则添加更多类。

#4 楼

只为正在寻找解决方案的其他人。我发现了这一点,比接受的答案要清楚得多。

此外,它还提供了简单的方法来更改链接上的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;   
} 


#5 楼

我想我找到了一个答案。但是我真的想知道这是否是正确的方法?以某种方式感觉有点脏:我只是将wp-includes / general-template.php中与徽标相关的部分复制到了主题的functions.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 );
}