web-dev-qa-db-ja.com

画像の寸法属性を削除するためのフィルタ

私はそれらを含む列の幅に画像の最大幅を設定する流動幅CSSテンプレートに基づいてサイトに取り組んでいる、そして私はインラインの width height 次元を削除する必要があるWordPressが画像に追加する属性。

私はこのフィルタで私の注目の画像でそれをやっています:

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 3 );

function remove_thumbnail_dimensions( $html, $post_id, $post_image_id ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

必要ならば、 the_content に同じフィルタを適用することができます。しかし、これを行うより良い方法はありますか?

35
goldenapples

皆さんありがとう!

image_send_to_editor フィルタは私が探していたものでした...それを指摘してくれてありがとう@ t31os。

これが私の機能です。

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );

function remove_thumbnail_dimensions( $html ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}

これはthe_post_thumbnail()で検索された画像からインラインの次元属性を取り除き、それらの属性がエディタに追加された新しい画像に追加されるのを防ぎます。 wp_get_attachment_imageや他の関連する機能を通して取得された画像からそれらを削除しません(そこにフックはありません)が、それらのケースは必要に応じてテンプレートファイルで処理することができます。

36
goldenapples

このスクリプトを少し修正しました。助けてくれてありがとう!

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10 );
add_filter( 'image_send_to_editor', 'remove_thumbnail_dimensions', 10 );
// Genesis framework only
add_filter( 'genesis_get_image', 'remove_thumbnail_dimensions', 10 );
// Removes attached image sizes as well
add_filter( 'the_content', 'remove_thumbnail_dimensions', 10 );
function remove_thumbnail_dimensions( $html ) {
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    return $html;
}
5
MikeNGarrett

function.phpで画像サイズを "gallery"として設定した場合

add_image_size( 'gallery', 200, 120, true );

"gallery"のような特定の画像サイズの幅と高さを削除することができます。

add_filter( 'post_thumbnail_html', 'remove_thumbnail_dimensions', 10, 4 );

function remove_thumbnail_dimensions( $html, $post_id, $post_image_id,$post_thumbnail) {
    if ($post_thumbnail=='gallery'){
    $html = preg_replace( '/(width|height)=\"\d*\"\s/', "", $html );
    }
    return $html;
}
1
Tohid Golkar

そのフィルタをthe_contentに適用すると、すべてのコンテンツに適用されます。これは効果的ですが、サイトのパフォーマンスと読み込み時間に影響を与える可能性があります。最初の場所に画像を挿入するときに、インラインの幅と高さのタグを挿入しないようにWordPressに指示した方が良いでしょう。

残念ながら、実際に画像を挿入するスクリプトはJavaScriptで構築されており、TinyMCE wysiwygエディタと相互作用します。直接フックする方法があるかもしれませんが、標準のadd_filter()呼び出しを使用しないでください。

0
EAMann