回答:
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-xxx
(xxxは添付ファイルID)クラスを奪いますが、添付画像の周りのリンクを削除<img>
してテキスト内リンクのみを残すことができる最も安全な方法です。添付ファイル以外の画像の周りのリンクはそのままです。
非添付画像を気にせず、投稿コンテンツ内のすべての画像をリンクにラップしないようにするには、これで十分です。
function attachment_image_link_remove_filter( $content ) {
$content =
preg_replace(array('{<a[^>]*><img}','{/></a>}'), array('<img','/>'), $content);
return $content;
}
ただし、アンカーの内部が<br />
タグなどの他の自己終了要素で終わっている場合は、問題が発生していることがわかります。これはまれなことですが、最初のバージョンを使用することをお勧めしますが、より長いバージョンです。