hapus tautan dari gambar menggunakan functions.php

8

Saya mencari cara untuk menghapus tautan lampiran dari gambar dalam konten posting.

Saya ingin menambahkan ini ke functions.php di tema saya. Saya tahu Anda dapat menonaktifkan ini dalam posting berdasarkan gambar, tetapi saya ingin melakukan ini sekali saja di halaman functions.php saya. Ada ide?

Terima kasih, Bart

digitalbart
sumber

Jawaban:

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 bisa lebih sederhana dan sayangnya hal ini juga membuat Anda tidak dapat melihat kelas tag yang unik wp-image-xxx(di mana xxx adalah attachment) <img>, tetapi ini adalah tag teraman yang bisa saya buat untuk hanya menghapus tautan di sekitar gambar lampiran dan meninggalkan tautan dalam teks serta tautan di sekitar gambar non-lampiran yang utuh.

Jika Anda tidak peduli tentang gambar non-lampiran dan ingin semua gambar dalam konten posting tidak dibungkus dengan tautan, ini sudah cukup:

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

Saya dapat melihatnya memecahkan banyak hal, jika bagian dalam jangkar berakhir dengan beberapa elemen penutup diri lainnya, seperti <br />tag. Itu akan jarang, tentu saja, tetapi saya akan merekomendasikan menggunakan versi pertama, meskipun lebih lama.

Johannes Pille
sumber
Terima kasih ini bekerja dengan sempurna! Saya akhirnya menggunakan yang pertama dan ya ini menghemat banyak waktu.
digitalbart