ฉันเปิดใช้งานcustom-logo
สำหรับชุดรูปแบบของฉันและให้พิมพ์<?php the_custom_logo(); ?>
ลงในส่วนหัว มีโอกาสใดที่จะเพิ่มคลาสเพิ่มเติมให้กับรูปภาพนี้โดยตรงหรือไม่ custom-logo
ต่อเริ่มต้นเพียงมาพร้อมกับ
ฉันเปิดใช้งานcustom-logo
สำหรับชุดรูปแบบของฉันและให้พิมพ์<?php the_custom_logo(); ?>
ลงในส่วนหัว มีโอกาสใดที่จะเพิ่มคลาสเพิ่มเติมให้กับรูปภาพนี้โดยตรงหรือไม่ custom-logo
ต่อเริ่มต้นเพียงมาพร้อมกับ
คำตอบ:
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 ที่กำหนดเองและโลโก้ลิงค์
นี่คือข้อเสนอแนะหนึ่งข้อที่เราอาจลองเพิ่มคลาสผ่าน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;
} );
ที่ซึ่งคุณสามารถปรับชั้นเรียนตามความต้องการของคุณ
ในขณะที่คุณพบว่าตัวเองthe_custom_logo
พึ่งพาget_custom_logo
ซึ่งตัวเองเรียกร้องwp_get_attachment_image
ให้เพิ่มcustom-logo
ชั้นเรียน ฟังก์ชั่นหลังมีตัวกรองwp_get_attachment_image_attributes
ซึ่งคุณสามารถใช้เพื่อจัดการคุณสมบัติของภาพ
ดังนั้นสิ่งที่คุณสามารถทำได้คือสร้างตัวกรองที่ตรวจสอบว่ามีcustom-logo
คลาสนั้นหรือไม่และหากมีให้เพิ่มคลาสเพิ่มเติม
ฉันคิดว่าฉันพบคำตอบเดียว แต่ฉันสงสัยจริงๆว่านี่เป็นวิธีที่ถูกต้องหรือไม่? รู้สึกสกปรกเล็กน้อย: ฉันเพียงแค่คัดลอกส่วนโลโก้ที่เกี่ยวข้องจาก wp-include / general-template.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 );
}
สำหรับคนอื่นที่กำลังมองหาวิธีแก้ปัญหา ฉันพบสิ่งนี้ซึ่งฉันพบว่าชัดเจนกว่าคำตอบที่ยอมรับ
นอกจากนี้ยังมีวิธีการง่ายๆในการเปลี่ยน 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;
}