web-dev-qa-db-ja.com

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

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

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

ありがとう、バート

8
digitalbart
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>タグ、ただし、これはonlyに思いつく最も安全なものです。添付画像の周囲のリンクを削除し、テキスト内のリンクと非添付画像の周囲のリンクをそのまま残します。

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

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

ただし、アンカーの内部が<br />タグなどの他の自己閉鎖要素で終わっている場合、物事が壊れているのがわかります。もちろん、それはめったにありませんが、最初の、ただし長いバージョンを使用することをお勧めします。

5
Johannes Pille