xóa liên kết khỏi hình ảnh bằng hàm.php


8

Tôi đang tìm cách để loại bỏ liên kết đính kèm khỏi hình ảnh trong nội dung bài viết.

Tôi muốn thêm cái này vào hàm.php trong chủ đề của tôi. Tôi biết bạn có thể vô hiệu hóa điều này trong bài viết trên cơ sở mỗi hình ảnh, nhưng tôi muốn làm điều này chỉ một lần trong trang Hàm.php của tôi. Có ý kiến ​​gì không?

Cảm ơn, Bart

Câu trả lời:


5
add_filter( 'the_content', 'attachment_image_link_remove_filter' );

function attachment_image_link_remove_filter( $content ) {
    $content =
        preg_replace(
            array('{<a(.*?)(wp-att|wp-content\/uploads)[^>]*><img}',
                '{ wp-image-[0-9]*" /></a>}'),
            array('<img','" />'),
            $content
        );
    return $content;
}

Regex có thể đơn giản hơn và thật không may, điều này cũng làm mất đi lớp duy nhất wp-image-xxx(trong đó xxx là ID đính kèm) của <img>thẻ, nhưng đó là cách an toàn nhất tôi có thể đưa ra để chỉ xóa các liên kết xung quanh hình ảnh đính kèm và để lại liên kết trong văn bản cũng như các liên kết xung quanh hình ảnh không đính kèm còn nguyên vẹn.

Nếu bạn không quan tâm đến hình ảnh không đính kèm và muốn tất cả hình ảnh trong nội dung bài đăng không được bọc trong các liên kết, thì điều này cũng đủ:

function attachment_image_link_remove_filter( $content ) {
    $content =
        preg_replace(array('{<a[^>]*><img}','{/></a>}'), array('<img','/>'), $content);
    return $content;
}

Tôi có thể thấy nó phá vỡ mọi thứ, nếu bên trong của một neo kết thúc trong một số yếu tố tự đóng khác, chẳng hạn như một <br />thẻ. Điều đó sẽ hiếm, rõ ràng, nhưng tôi khuyên bạn nên sử dụng phiên bản đầu tiên, mặc dù dài hơn.


Cảm ơn điều này đã làm việc hoàn hảo! Tôi đã kết thúc bằng cách sử dụng cái đầu tiên và vâng, điều này giúp tôi tiết kiệm rất nhiều thời gian.
Digitalbart
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.