add_image_size'yi kaldırın veya güncelleyin


16

Doğru kullanarak tanımlanmış görüntü boyutları bir dizi olan bir tema üzerinde çalışıyorum:

add_image_size( 'name', 500, 200, true );

Alt temadan bu tanımlanmış boyutları geçersiz kılmak istiyorum:

add_image_size( 'new-name', 400, 300, true );

Yeni boyutlar ekleyebileceğimi biliyorum, ancak aynı adı eklersem yani:

add_image_size( 'name', 400, 300, true );

Daha sonra üst işlev çağrısı kullanılır - çocuk göz ardı edilir - ekstra kurallar eklemek asla kullanılmayacak ekstra görüntüler ekler - o kadar da kötü değil, ama etkili değil.

Eklenen bir görüntü boyutunun kaydını silmek için bir işlev var mı?

Şerefe!

ışın


Alakalı tüm kodu gönderebilir misiniz ? add_image_size()Aramalar sadece çıplak mı oturuyor functions.php, yoksa uygun bir geri arama içine after_setup_thememi sarılıp bağlanıyorlar ? Hangisinin sorunuzu cevaplamak için kritik olduğunu bilmek.
Chip Bennett

merhaba chip - yorumunuz için teşekkürler - haklısın after_setup_theme içine sarılmış - bu yüzden bu yine öncelikler hakkında - her zaman özlüyorum!
Q Studio

Yanıtlar:


22

Bu add_image_size( $name, $width, $height, $crop )işlev, bunu kullanarak birden fazla çağrıyı ele alacak kadar zariftir $name. Sadece mevcut değerin üzerine yazar :

$_wp_additional_image_sizes[$name] = array( 'width' => absint( $width ), 'height' => absint( $height ), 'crop' => (bool) $crop );

İhtiyacınız olan tüm özel görüntü boyutunun üst Tema'nın tanımını geçersiz kılmak için yapmak o yollarla Yani sağlamak olduğunu için çağrı add_image_size()yangınları sonra ana Tema'nın çağrısı .

Ana Temanın böyle olduğunu varsayarsak:

function parent_theme_setup() {
    add_image_size( 'name', 500, 200, true );
    add_image_size( 'new-name', 400, 300, true );
}
add_action( 'after_setup_theme', 'parent_theme_setup' );

Ardından ana Temanın add_image_size()çağrısı after_setup_theme, varsayılan öncelikte (yani 10) kancada tetiklenir .

(Not: aramaları durumunda değil bir geri sarılmış, sonra da ateş plugins_loadedöncelik, kanca 10.)

Kritik kısım şudur : Çocuk Temasının functions.phpdosyası ana Tema'dan önce ayrıştırılır , bu nedenle add_image_size()çağrılarınızı tetiklemek için aynı kancaları kullanırsanız , ana Tema'nın add_image_size()çağrıları tarafından geçersiz kılınır .

Çözüm, alt Temanınadd_image_size() çağrısının üst Temadan sonra gerçekleşmesini sağlamak için daha sonraki bir kanca veya daha düşük bir öncelik kullanmaktır .

Üst Temanın çağrılarını nasıl tetiklediğinden bağımsız olarak, bu hile yapmalıdır:

function child_theme_setup() {
    add_image_size( 'name', 400, 300, true );
}
add_action( 'after_setup_theme', 'child_theme_setup', 11 );

Not aynı kullandıkları after_setup_themekanca ama kullanmak düşük önceliğe (yani 11yerine 10önceliği ile başlayan) öncelik (yüksek sayı düşürmek için) daha yüksek önceliğe (düşük sayı sırayla. Callbacks yangını 0. Önceliğe girdiklerini bir geri arama Yani 11ateş edeceği sonra öncelikli bir geri çağırma 10.

Da unutmayın after_setup_themekanca kendisi ateşler sonraplugins_loaded bu geri arama hala ana tema olsa bile ana tema geçersiz kılar, böylece kanca _doing_it_wrong()uygun bir kanca içine bağımlısı uygun bir geri aramasında tür aramaları, sarma vermeyerek.


mükemmel - teşekkürler çip! - Her ikisini de aynı öncelikte tuttum - çocuğu ebeveynten sonra geri çektim ve hepsi iyi çalışıyor.
Q Studio

Bir eklenti add_image_size çağırıyorsa değerin üzerine yazmak gibi görünmüyor :(
Zhianc

1

Birisi boyutları değiştirmek yerine ek görüntü boyutlarını basitçe kaldırmak istiyorsa remove_image_size (string $ name) kullanın , ör.

function pinboard_child_theme_setup( $sizes) {

    $image_size_names = array('thumbnail', 'medium', 'large',
        'slider-thumb', 'blog-thumb', 'teaser-thumb', 'gallery-1-thumb',
        'gallery-2-thumb', 'gallery-3-thumb', 'image-thumb', 'video-thumb');

    $image_size_names_length = count($image_size_names);
    for($x = 0; $x < $image_size_names_length; $x++) {
        remove_image_size($image_size_names[$x]);
    }   
}
add_action( 'after_setup_theme', 'pinboard_child_theme_setup', 11);

-1

Şili temanızda kullanmanız gerekir add_action( 'after_setup_theme','new-name');


new-name burada işlevin adı veya ana işleviniz için kullandığınız addır
robin

Cevabınıza bir açıklama ekleyin: sorunu neden ve nasıl çözüyor? Bunun new-namegeçersiz bir geri arama adı olduğunu unutmayın .
fuxia

"new-name", eklenen resim boyutunun tutamacıdır.
Q Studio
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.