थीम कस्टमाइज़र - सेटिंग्स ऑर्डर


10

यदि मैं किसी एकल खंड में 5 से अधिक सेटिंग्स जोड़ता हूं, तो सेटिंग्स का क्रम अजीब हो जाता है।

उदाहरण के लिए:

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

एक pastebin में आगे के उदाहरण - कोई समय समाप्ति समय नहीं

रंग 1 से 7 तक गिने जाते हैं, लेकिन वे उस क्रम में दिखाई देते हैं: 2,1,3,4,6,5,7

क्या किसी ने भी ऐसा ही अनुभव किया है?

या किसी को भी पता है कि यह कैसे हल करने के लिए?


यकीन है, कि यह "cusomizer" वर्तनी है? ;)
केसर

1
thx ... नियत = D
xsonic

जवाबों:


9

यदि आपको एक विशिष्ट क्रम में उनकी आवश्यकता है, तो नियंत्रणों को प्राथमिकता दें। अन्यथा, उनके आदेश को परिभाषित नहीं किया गया है और इसकी गारंटी नहीं दी जा सकती है।

यदि आप प्राथमिकता को परिभाषित नहीं करते हैं, तो नियंत्रण को "10" की डिफ़ॉल्ट प्राथमिकता मिलती है।

जब दो नियंत्रणों की प्राथमिकता समान होती है, तो परिणामी क्रम अपरिभाषित होता है, क्योंकि यही PHP काम करता है


2
ओह मेरी ... यह आसान है। पता नहीं प्राथमिकता मान नियंत्रण aswell पर काम करता है। आपका बहुत बहुत धन्यवाद!
xsonic 13

1

साफ - सफाई

डिबगिंग के लिए Iterating बहुत आसान है, जैसा कि आप चरण दर चरण जानकारी देखेंगे:

»क्या होता है, जब मैंने इसे इसमें जोड़ा?«

तो बस एक सफाई के साथ शुरू करें और देखें कि यह कैसे जोड़ा जाता है।

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>';
}

छंटाई

मौका बहुत अधिक है, कि आप इसके चारों ओर डिफ़ॉल्ट php छँटाई तंत्र के साथ मिल जाएगा । बस आउटपुट पर एक नज़र डालें और देखें कि आप सरल सरणी सॉर्टिंग के साथ क्या कर सकते हैं (संकेत: आप आसानी से कास्ट (array) $object और टाइप कर सकते हैं (object) $array


आपकी सहायता के लिए धन्यवाद। इस बिंदु पर यह सही क्रम में है। मुझे लगता है कि मुख्य वर्गों में आदेश को कहीं भी मिला दिया जाना चाहिए। लेकिन मैं इसे अभी तक ट्रैक नहीं कर सका।
xsonic

क्या यह अब सही उत्तर है? यदि हां, तो कृपया इसे समाधान के रूप में चिह्नित करें। चेक मार्क वोटिंग तीर के ठीक नीचे है। यदि नहीं, तो कृपया अपना स्वयं का उत्तर जोड़ें और अपने आस-पास पाने के लिए आपके द्वारा उठाए गए चरणों की व्याख्या करें। धन्यवाद।
kaiser

ओटो ने पहले ही सही उत्तर पोस्ट कर दिया (जो मैंने स्वीकार किया)। give a priority value to the controls, मुझे लगता है कि आगे कोई स्पष्टीकरण की आवश्यकता नहीं है; ;-)
xsonic

बिल्कुल सहमत :)
kaiser
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.