functions.phpを使用して画像からリンクを削除する


8

投稿コンテンツの画像から添付リンクを削除する方法を探しています。

これを私のテーマのfunctions.phpに追加したいと思います。画像ごとに投稿でこれを無効にできることは知っていますが、functions.phpページで一度だけ無効にしたいと思います。何か案は?

おかげで、バート

回答:


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;
}

正規表現はより単純であり、残念ながらこれはタグの一意のwp-image-xxxxxxは添付ファイルID)クラスを奪いますが、添付画像の周りのリンクを削除<img>してテキスト内リンクのみを残すことができる最も安全な方法です。添付ファイル以外の画像の周りのリンクはそのままです。

非添付画像を気にせず、投稿コンテンツ内のすべての画像をリンクにラップしないようにするには、これで十分です。

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

ただし、アンカーの内部が<br />タグなどの他の自己終了要素で終わっている場合は、問題が発生していることがわかります。これはまれなことですが、最初のバージョンを使用することをお勧めしますが、より長いバージョンです。


ありがとうこれは完璧に働きました!私は最初のものを使用することになりました、そして、はい、これは私に多くの時間を節約しました。
digitalbart
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.