Tema özelleştirici - ayar sırası


10

Tek bir bölüme 5'ten fazla Ayarlar eklersem ayarların sırası garipleşir.

Örneğin:

// Link color
$wp_customize->add_setting( 'tonal_'.$themeslug.'_settings[link_color1]', array(
    'default'           => $themeOptions['link_color1'],
    'type'              => 'option',
    'sanitize_callback' => 'sanitize_hex_color',
    'capability'        => 'edit_theme_options',
    'transport'         => 'postMessage'
) );
$wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'tonal_'.$themeslug.'_settings[link_color1]', array(
    'label'    => __( 'Link color1', 'tonal' ),
    'section'  => 'colors',
    'settings' => 'tonal_'.$themeslug.'_settings[link_color1]',
    'choices'  => '#ffffff'
) ) );

Bir macundaki diğer örnekler - son kullanma süresi yok

Renkler 1'den 7'ye kadar numaralandırılmıştır, ancak ayarlarda bu sırayla görünürler: 2,1,3,4,6,5,7

Herkes aynı şeyi yaşadı mı?

Yoksa bunu nasıl çözeceğini bilen var mı?


Tabii, "cusomizer" yazıldığından mı? ;)
kaiser

1
thx ... sabit = D
xsonic

Yanıtlar:


9

Belirli bir sırayla ihtiyacınız varsa, denetimlere öncelik değeri verin. Aksi takdirde, siparişleri tanımlanmaz ve garanti edilemez.

Bir öncelik tanımlamazsanız, kontrol "10" varsayılan önceliğini alır.

İki denetim aynı önceliğe sahip olduğunda, ortaya çıkan sipariş tanımsızdır, çünkü PHP böyle çalışır .


2
oh benim ... bu kadar basit. Öncelik değerinin kontrollerde de çalıştığını bilmiyordum. Çok teşekkürler!
xsonic

1

Temizlemek

Adım adım bilgileri görebileceğiniz için hata ayıklama için yineleme çok daha kolaydır:

»Bunu buna ekledikten sonra ne olur?«

Yani bir temizlik ile başlayın ve nasıl eklendiğini görün.

foreach ( range( 1, 7 ) as $nr )
{
    $wp_customize->add_setting( 
        "tonal_{$themeslug}_settings[link_color{$nr}]",
        array(
            'default'           => $themeOptions[ "link_color{$nr}" ],
            'type'              => 'option',
            'sanitize_callback' => 'sanitize_hex_color',
            'capability'        => 'edit_theme_options',
            'transport'         => 'postMessage'
        )
    );
    $wp_customize->add_control(
        new WP_Customize_Color_Control(
            $wp_customize,
            "tonal_{$themeslug}_settings[link_color{$nr}]",
            array(
                'label'    => __( sprintf( 'Link color%s', $nr ), 'tonal' ),
                'section'  => 'colors',
                'settings' => "tonal_{$themeslug}_settings[link_color{$nr}]",
                'choices'  => '#ffffff'
            ) 
        ) 
    );

    // DEBUG:
    echo '<pre>'; var_export( $wp_customize, true ); echo '</pre>';
}

sınıflandırma

Şans oldukça yüksektir, varsayılan php sıralama mekanizmaları ile etrafta dolanırsınız . Çıktıya bir göz atın ve basit dizi sıralama ile neler yapabileceğinizi görün (İpucu: Döküm (array) $object ve kolayca yazabilirsiniz (object) $array.


Yardımın için teşekkürler. Bu noktada her şey doğru sırada. Düzen çekirdek sınıfların herhangi bir yerinde karışık olmalı bence. Ama henüz takip edemedim.
xsonic

Şimdi doğru cevap bu mu? Öyleyse, lütfen çözüm olarak işaretleyin. Onay işareti oylama oklarının hemen altındadır. Değilse, lütfen kendi cevabınızı ekleyin ve almak için attığınız adımları açıklayın. Teşekkürler.
kaiser

Otto zaten doğru cevabı gönderdi (kabul ettiğim). give a priority value to the controls, Sanırım başka bir açıklamaya gerek yok ;-)
xsonic

Kesinlikle katılıyorum :)
kaiser
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.