Cum să adaugi o clasă CSS la logo-ul personalizat?
Am activat custom-logo
pentru tema mea și l-am afișat cu <?php the_custom_logo(); ?>
în header. Există vreo posibilitate de a adăuga mai multe clase direct acestei imagini? În mod implicit, acesta vine doar cu clasa custom-logo
.

WordPress oferă un cârlig (hook) de filtrare pentru personalizarea siglei personalizate. Cârligul get_custom_logo
este filtrul. Pentru a modifica clasa siglei, acest cod vă poate ajuta.
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;
}
Referință: Cum să schimbi clasa siglei personalizate și a link-ului siglei în WordPress

Iată o sugestie despre cum am putea încerca să adăugăm clase prin filtrul wp_get_attachment_image_attributes
(netestat):
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;
} );
unde puteți ajusta clasele în funcție de nevoile dumneavoastră.

După cum ai descoperit, funcția the_custom_logo
se bazează pe get_custom_logo
, care la rândul ei apelează wp_get_attachment_image
pentru a adăuga clasa custom-logo
. Această ultimă funcție dispune de un filtru, wp_get_attachment_image_attributes
, pe care îl poți folosi pentru a manipula atributele imaginii.
Deci, ceea ce ai putea face este să construiești un filtru care verifică dacă clasa custom-logo
este prezentă și, în caz afirmativ, să adaugi mai multe clase.

Doar pentru oricine altcineva care caută soluții. Am găsit asta, care mi se pare mult mai clară decât răspunsul acceptat.
În plus, oferă modalități simple de a schimba URL-ul pe link! Doar un pic mai detaliat decât răspunsul acceptat.
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;
}

Cred că am găsit un răspuns. Dar mă întreb dacă aceasta este calea corectă? Pare un pic murdar cumva: pur și simplu am copiat părțile legate de logo din wp-includes/general-template.php în functions.php al temei mele și am redenumit funcțiile adăugând câteva clase personalizate:
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', // am adăugat clase aici
'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 );
}

Doar o mică modificare la răspunsul lui @Dhinju Divakaran de mai sus. Înlocuiți mai întâi șirul "custom-logo-link" și apoi "custom-logo", deoarece "custom-logo" din "custom-logo-link" era de asemenea înlocuit. Mai jos este codul actualizat.
function change_logo_class($html) {
$html = str_replace('custom-logo-link', 'navbar-brand', $html);
$html = str_replace('custom-logo', 'img-fluid', $html);
return $html;
}
add_filter( 'get_custom_logo', 'change_logo_class' );
