WP 4.4'te duyarlı görüntüleri nasıl devre dışı bırakırım?


37

4.3.1 kurulumumu başarıyla https’e dönüştürdüm. 4.4'e yükselttikten sonra. Yeni srcsetözellikle ilgili bir sorunum var . srcGörüntüler için öznitelik https kullanılarak ayarlanırken, srcsetöznitelik http'dir. Bu, tarayıcıların hiçbir resmi görüntülememesine neden olur.

Daha iyi bir düzeltme beklerken srcset, tüm görüntülerin yalnızca bir srcözniteliği olması için özniteliği tamamen ayarlamayı devre dışı bırakmak istiyorum . Bunu nasıl yaparım?


2
Bunu da bilmek isterim - bu sadece sitemizin doğru bir karmaşa yaptı!
Chris

Başarısız çeşitli yollar denedim ama ana soruyu yeni yaklaşımlara açık bırakmak istedim. add_filterdefault-filters.php//add_filter( 'the_content', 'wp_make_content_images_responsive' );
Girişimlerimin

1
Duyarlı görüntüleri devre dışı bırakmak yerine, HTTP ve HTTPS'yi neyin karıştırdığını aramanız gerekir, çünkü duyarlı görüntüler işlevselliği sorunun kaynağı değildir. Tüm web sitelerim HTTPS altında ve srcsetWordPress tarafından doğru bir şekilde oluşturuluyor. HTTP'den HTTPS'ye nasıl geçtiniz?
cybmeta


Şimdi oldukça iyi anlaşılıyor gibi görünüyor. İkili posta gönderme için özür dilerim - wordpress.org ( wordpress.org/support/topic/… ) üzerinden başlattığım konu başlığında (srcset https kullanmalı) kök sorunu da çözüldü. yani yeniden canlandırıldığında. Orada çözen joemcgill'e teşekkürler.
brokkr

Yanıtlar:


43

4.4'te duyarlı görüntü desteğini kaldırmayı deneyebileceğiniz birkaç şey:

/**
 * 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' );

Ancak @cybmeta tarafından belirtildiği gibi, sorun başka bir yerde olabilir.

Https zorla srcset

wp_calculate_image_srcsetFiltreyle hata ayıklama yapabilir ve bu hızlı düzeltmeyi bile deneyebilirsiniz :

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 şemasını ayarlamak için https. Diğer bir yaklaşım ise şemasız olması olacaktır //.

Diğer set_url_scheme()seçenekler için Kodeks'i inceleyin :

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

Ancak daha derine inip kök nedenini bulmaya çalışmalısınız.

Güncelleme:

Daha önce şu wp_calculate_image_srcset()fonksiyondan kurtulabiliriz :

add_filter( 'wp_calculate_image_srcset_meta', '__return_empty_array' );

daha sonra wp_calculate_image_srcsetveya max_srcset_image_widthfiltrelerini kullanarak .

Ayrıca yanlış / boş değer yerine boş bir dizi döndürmek için # 41895 numaralı bilete göre güncellendi .


Sadece her iki yaklaşımın da benim için çalıştığı gibi olduğunu doğrulamak için, disable srcset srcset'i kaldırdı (ve böylece 'sabit' görüntüleri geri getirdi) ve https kuvveti srcset url'lerini https olarak değiştirdi. Her iki yaklaşım da karışık içerik uyarısını kaldırdı.
brokkr

4
add_filter( 'wp_calculate_image_srcset_meta', '__return_null' );Solüsyon benim için çok çalıştı. Teşekkür ederim!
Tim Bowen

Yardım ettiğini duyduğuma sevindim.
Birgire

Bu bir validatörde uyarılara neden olur: "Boyutlar niteliği yalnızca srcset niteliği de mevcutsa belirtilebilir."
Michael Rogers

Srcset'i filtrelemiş gibi görünüyorsunuz, ancak boyutları özelliğini değil. @MichaelRogers
Birgire

13

Bunu yapmanın en basit ve temiz yolu basitçe şudur:

add_filter( 'wp_calculate_image_srcset', '__return_false' );

Diğer insanların söylediklerinin yankılanması için, srcset iyi bir fikir ve gelecek (şimdiki en iyi uygulama), ancak sitenizi çalışır durumda tutmak için hızlı bir düzeltmeye ihtiyaç duyuyorsanız, yukarıdaki kod parçası işi kesmeksizin yapar.

kaynak: WP Çekirdek Blog


5
Sadece __return_falseyerine kullanın disable_srcset, wp'nin bunun gibi basit görevler için işlevleri vardır.
Jake,

3
Ve her ikiniz de, sadece false döndürmek için yepyeni bir işlev yapmadan kodunuzu geliştirebilirsiniz. WordPress bunu yapmak için işlevler sağlar. codex.wordpress.org/Function_Reference/_return_false
Jake,

1
Bu doğru çözümdür. Bu özellik wp_autop kadar iyi düşünülmüş. Sanat resmi yanı sıra duyarlı görüntüler elde etmek için <picture> özelliğini kullanıyorum.
Peter Wooster

1
@Jake 1 ila 10 arasında bir ölçekte, "sadece false döndürmek için yeni bir fonksiyon oluşturma" WordPress'e yaklaşık -2 kabartıyor. Herkesin (sadece bir WP dev değil) anlayabileceği kendi kendini belgeleyen kod belirli bir değere sahiptir.
Mahmoud Al-Qudsi,

1
@ MahmoudAl-Qudsi Çünkü '__return_false' çok kafa karıştırıcı? Bir WordPress forumunda bu tartışma, bir WordPress özelliğini kapatmakla ilgilidir. Bunu yapmak için WordPress'te yerleşik olan varsayılan, çok temel ve iyi belgelenmiş, WordPress dönüş işlevlerini kullanmak delice değildir. İşlevin "return_false" olarak adlandırılması oldukça kendi kendini belgelemektir. Deneyin ve ne olduğunu tahmin edin.
Jake,

7

Büyük olasılıkla, srcsetözelliklerinizdeki URL’lerin HTTPS’yi yanlış göstermesinin nedeni, tüm resimler için URL’lerin wp_options tablonuzdaki siteurl seçeneğinin değeri kullanılarak oluşturulmuş olmasıdır. Ön ucunuzu HTTPS üzerinden sunuyorsanız, bu değerleri de değiştirmelisiniz (Ayarlar> Genel aracılığıyla).

İşte WordPress sorun takip sistemindeki ilgili bilet: https://core.trac.wordpress.org/ticket/34945


5

Bu, 1 pikselden daha geniş görüntüleri ortadan kaldırarak srcset kodunu devre dışı bırakacaktır.

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

Uzun vadede, asıl sorunu gidermeye çalışmalısınız. Yine de, hızlı bir düzeltme yapmanız gerekiyorsa bu işe yarar.



1
Peki ya create_function ()? Cevaplarımın da PHP 5.2'de çalışmasını seviyorum.
Otto,

2

Ayarlar / Genel'de, WordPress Adresinizin (URL) ve Site Adresinizin (URL) https://etkialaniniz.com.tr olarak ayarlandığından emin olun.

Bkz http://wptavern.com/how-to-fix-images-not-loading-in-wordpress-4-4-while-using-ssl

WordPress'e duyarlı görüntüler alma çabasını yönlendiren Joe McGill, forum başlığında da cevap verdi ve Cree'nin önerisinin doğru olduğunu onayladı, “Ön uçta HTTPS kullanıyorsanız, evinizin ve sitenizin URL’lerini değiştirmelisiniz URL> Ayarlar> Genel’de HTTPS şemasını kullanıyorlar ”dedi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.