WP 4.4でレスポンシブイメージを無効にするにはどうすればよいですか?


37

4.3.1インストールをすべてのhttpsに正常に変換しました。4.4に更新した後。新しいsrcset属性に問題があります。一方でsrc、画像の属性は、HTTPSを使用して設定され、srcset属性は、httpです。これにより、ブラウザで画像がまったく表示されなくなります。

より良い修正を待っている間srcset、すべての画像がsrc属性のみを持つように属性の設定を完全に無効にしたいと思います。それ、どうやったら出来るの?


2
私もこれを知りたいです-それはちょうど私たちのウェブサイトの正しい混乱を作りました!
クリス

私はさまざまな方法を試してみましたが成功しませんでしたが、主な質問を新しいアプローチに開放したいと思いました。私の試みの最も抜本的なはコメントアウトされたadd_filter中での行をdefault-filters.php:私は関与していると考えられて//add_filter( 'the_content', 'wp_make_content_images_responsive' );
brokkr

1
レスポンシブ画像の機能は問題の原因ではないため、レスポンシブ画像を無効にする代わりに、HTTPとHTTPSが混在しているものを探す必要があります。私のウェブサイトはすべてHTTPSの下にあり、srcsetWordPressによって正しく作成されています。HTTPからHTTPSにどのように移行しましたか?
サイブメタ


これでかなり改善されたようです。二重投稿の謝罪-ルートの問題(srcsetはhttpsを使用する必要があります)は、wordpress.org(wordpress.org/support/topic/…)でやり直したスレッドでも解決されます。それが復活したとき。あそこを解決してくれたjoemcgillに感謝します。
brokkr

回答:


43

4.4でレスポンシブイメージのサポートを削除しようとすることができるいくつかのことを次に示します。

/**
 * Disable responsive image support (test!)
 */

// Clean the up the image from wp_get_attachment_image()
add_filter( 'wp_get_attachment_image_attributes', function( $attr )
{
    if( isset( $attr['sizes'] ) )
        unset( $attr['sizes'] );

    if( isset( $attr['srcset'] ) )
        unset( $attr['srcset'] );

    return $attr;

 }, PHP_INT_MAX );

// Override the calculated image sizes
add_filter( 'wp_calculate_image_sizes', '__return_empty_array',  PHP_INT_MAX );

// Override the calculated image sources
add_filter( 'wp_calculate_image_srcset', '__return_empty_array', PHP_INT_MAX );

// Remove the reponsive stuff from the content
remove_filter( 'the_content', 'wp_make_content_images_responsive' );

しかし、@ cybmetaが述べたように、問題は他の場所にある可能性があります。

httpsを強制する srcset

wp_calculate_image_srcsetフィルタを使用していくつかのデバッグを行い、このクイックフィックスを試すこともできます

add_filter( 'wp_calculate_image_srcset', function( $sources )
{
    foreach( $sources as &$source )
    {
        if( isset( $source['url'] ) )
            $source['url'] = set_url_scheme( $source['url'], 'https' );
    }
    return $sources;

}, PHP_INT_MAX );

URLスキームをに設定しhttpsます。別のアプローチはそれを計画なしにすることでしょう//

他のset_url_scheme()オプションについてはコーデックスをご覧ください:

$source['url'] = set_url_scheme( $source['url'], null );        
$source['url'] = set_url_scheme( $source['url'], 'relative' );

しかし、より深く掘り下げて根本原因を見つけようとする必要があります。

更新:

次のようにしてwp_calculate_image_srcset()関数から早く脱出できます。

add_filter( 'wp_calculate_image_srcset_meta', '__return_empty_array' );

次に、wp_calculate_image_srcsetまたはmax_srcset_image_widthフィルタを使用します。

また、チケット#41895に従って更新され、false / nullの代わりに空の配列を返します。


両方のアプローチがそれぞれ意図したとおりに機能したことを確認するために、srcsetを無効にするとsrcsetが削除され(したがって、「固定」イメージが戻されました)、強制httpsがsrcset urlをhttpsに変更しました。両方のアプローチにより、混合コンテンツの警告が削除されました。
brokkr

4
add_filter( 'wp_calculate_image_srcset_meta', '__return_null' );解決策は私のために素晴らしい仕事しました。ありがとうございました!
ティムボーウェン

助けてくれてうれしいです。
バージール

これにより、バリデータで警告が発生します。「srcset属性も存在する場合にのみ、sizes属性を指定できます。」
マイケルロジャース

srcsetは除外しましたが、sizes属性は除外していないようです。@MichaelRogers
birgire

13

これを行う最も簡単でクリーンな方法は、次のとおりです。

add_filter( 'wp_calculate_image_srcset', '__return_false' );

他のほとんどの人が言っていることをエコーするために、srcsetは良いアイデアであり、将来的です(現在のベストプラクティス)が、サイトを機能させるために簡単な修正が必要な場合、上記のスニペットはハッキングなしで仕事をします。

出典:WP Core Blog


5
__return_false代わりに使用するだけでdisable_srcset、wpにはそのような単純なタスクのための機能があります。
ジェイク

3
そして、どちらもfalseを返すためだけにまったく新しい関数を作成しないことで、コードを改善できます。WordPressはそれを行う機能を提供します。codex.wordpress.org/Function_Reference/_return_false
ジェイク

1
これは正しい解決策です。この機能は、wp_autopと同様に考え抜かれています。<picture>を使用して、アートディレクションとレスポンシブイメージを取得しますが、これには対応していません。
ピーターウースター

1
@Jakeを1から10のスケールで「falseを返すためだけに新しい関数を作成」すると、WordPressに約-2の膨張が追加されます。(WP開発者だけでなく)誰もが理解できる自己文書化コードは、特定の価値があります。
マフムードアルクッディ

1
@ MahmoudAl-Qudsi「__return_false」はとても紛らわしいので?WordPressフォーラムでのこの議論は、WordPress機能をオフにすることに関するものです。それを行うために、WordPressに組み込まれているデフォルトの非常に基本的で十分に文書化されたWordPressリターン関数を使用するのは気になりません。関数の名前が「return_false」であるという事実は、自己文書化されています。それが何をするか試してみてください?
ジェイク

7

ほとんどの場合、srcset属性のURLがHTTPSを誤って表示しているのは、すべての画像のURLがwp_optionsテーブルのsiteurlオプションの値を使用して構築されているためです。フロントエンドをHTTPS経由で提供している場合は、これらの値も変更する必要があります([設定]> [全般]を使用)。

WordPressの問題追跡システムの関連チケットは次のとおりです:https : //core.trac.wordpress.org/ticket/34945


5

これにより、1ピクセルを超える画像が削除され、srcsetコードが無効になります。

add_filter( 'max_srcset_image_width', create_function( '', 'return 1;' ) );

長期的には、実際の問題を修正する必要があります。それでも、簡単な修正が必要な場合は機能します。



1
create_function()はどうですか?PHP 5.2でも私の回答が機能するのが好きです。
オットー

2

設定/全般で、WordPressアドレス(URL)とサイトアドレス(URL)がhttps://yourdomain.comに設定されていることを確認します

http://wptavern.com/how-to-fix-images-not-loading-in-wordpress-4-4-while-using-sslを参照してください

レスポンシブ画像をWordPressに取り込む作業を主導したJoe McGillもフォーラムスレッドで応答し、Creeの提案が正しいことを確認しました。「フロントエンドでHTTPSを実行している場合は、自宅とサイトのURLを変更する必要がありますHTTPSスキームを使用するように、[設定]> [一般]のURLを指定します」と彼は言いました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.