it-swarm.com.ru

Как добавить класс CSS в собственный логотип?

Я включил custom-logo для своей темы и распечатал ее с заголовком <?php the_custom_logo(); ?>. Есть ли шанс просто добавить еще несколько классов к этому изображению напрямую? По умолчанию он поставляется только с custom-logo.

17
leymannx

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 и класс ссылок логотипа

14
Dhinju Divakaran

Вот одно предложение, как мы можем попытаться добавить классы через фильтр 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;
} );

где вы настраиваете классы под свои нужды.

12
birgire

Как вы обнаружили, the_custom_logo полагается на get_custom_logo , который сам вызывает wp_get_attachment_image для добавления класса custom-logo. Последняя функция имеет фильтр wp_get_attachment_image_attributes , который вы можете использовать для управления атрибутами изображения.

Итак, вы можете создать фильтр, который проверяет, есть ли класс custom-logo, и если да, добавьте больше классов.

7
cjbj

Я думаю, что нашел один ответ. Но мне действительно интересно, если это правильный путь? Это выглядит немного грязно: я просто скопировал части, связанные с логотипом, из 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 );
}
2
leymannx