คุณจะลบมิติภาพขนาดย่อที่กำหนดรหัสฮาร์ดได้อย่างไร


15

ฉันจะลบคุณลักษณะความกว้างและความสูงออกจาก post_thumbnail เมื่อแทรกด้วยได้<?php the_post_thumbnail(); ?>อย่างไร

<img width="800" height="533" src="http://domain.com/wp-content/uploads/2011/02/image.jpg" class="attachment-post-thumbnail wp-post-image" />

ค้นหาไฟล์ thumbnail.php ไม่แน่ใจ แต่โดยปกติแล้วไฟล์นั้นจะมีการเข้ารหัสอย่างหนัก
Niraj Chauhan

ในกรณีที่คุณสงสัยฉันต้องการแก้ไขความกว้างและความสูงด้วย CSS - ตั้งค่าความกว้างสูงสุดโดยเฉพาะและปล่อยให้ความสูงตั้งค่าตัวเองแทนที่จะตั้งค่าเริ่มต้นเป็นรหัสที่ยาก
Carson

ใช้ firebug เพื่อรับคลาสหรือ ID ที่แน่นอนหรือให้ URL ของคุณกับฉัน
Niraj Chauhan

2
การเปลี่ยนแปลงอะไรในไฟล์ที่อยู่นอกชุดรูปแบบ (ตัวอย่างเช่น post-thumbnail-template.php) จะเป็นความคิดที่ไม่ดีเนื่องจากการอัปเดต WordPress จะเขียนทับมัน
Carson

อะไรทำให้คุณคิดว่าคุณจำเป็นต้องลบแอตทริบิวต์เพื่อทำสิ่งที่คุณต้องการ
t31os

คำตอบ:


25

ที่เกี่ยวข้อง: ตัวกรองเพื่อลบคุณลักษณะขนาดภาพหรือไม่

มีตัวกรองpost_thumbnail_htmlที่ได้รับเนื่องจากอาร์กิวเมนต์เป็นองค์ประกอบ html เต็มรูปแบบที่แสดงภาพขนาดย่อของโพสต์ก่อนที่จะถูกสะท้อนไปยังหน้า คุณสามารถกรองมิติด้วย regex เล็กน้อย:

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3 );

function remove_thumbnail_dimensions( $html, $post_id, $post_image_id ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

มันไม่ทำงานสำหรับฉัน add_filter ('post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3); ฟังก์ชัน remove_thumbnail_dimensions ($ html, $ post_id, $ post_image_id) {ถ้า (wp_is_mobile ()) {$ html = preg_replace ('/ (ความกว้าง | ความสูง) = \ "\ d * \" \ s /', 'h $ \ ); } ส่งคืน $ html; }
dlopezgonzalez

นี่จะเป็นการลบความกว้าง / ความสูงออกจากอินสแตนซ์ทั้งหมดที่the_post_thumbnail()ใช้
Dario Zadro

5

คุณสามารถคว้านิ้วโป้งและใส่ไว้ในแท็ก img ด้วยตัวคุณเอง:

<?php
$thumbnail = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'your_thumb_handle' );
?>
<img src="<?php echo $thumbnail['0']; ?>" />

1
นั่นเป็นทางออกเดียวที่ฉันเจอเช่นกันก็แค่หวังว่าจะมีวิธีที่จะทำได้โดยไม่ต้องหาวิธีแก้ปัญหา
Carson

แต่คุณต้องค้นหาแอตทริบิวต์ alt และหัวเรื่องด้วย
MZAweb

0
add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
add_filter( 'the_content', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

สิ่งนี้จะทำงานได้ "the_contnet" จะลบความกว้างและความสูงของรูปภาพเนื้อหาข้อความทั้งหมดที่โพสต์


โปรดแก้ไขคำตอบของคุณและเพิ่มคำอธิบาย: เหตุใดจึงแก้ไขปัญหาได้
fuxia

0

ฉันชอบวิธีนี้ด้านล่างเนื่องจากฉันไม่ได้ใช้ฟังก์ชั่นทดแทนทั่วโลก สิ่งนี้จะรวมอยู่ในไฟล์ธีมของคุณ

<?php echo preg_replace( '/(width|height)="\d*"/', '', get_the_post_thumbnail( get_the_ID(), 'large' ) ); ?>

คุณสามารถแทนที่ "large" ด้วย "thumbnail", "Medium", "full" หรือขนาดภาพที่คุณกำหนดเองที่ประกาศในธีมของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.