Theme Customizer - ลำดับการตั้งค่า


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
ขอบคุณ ... fixed = D
xsonic

คำตอบ:


9

หากคุณต้องการในลำดับที่เฉพาะเจาะจงจากนั้นให้ความสำคัญกับการควบคุม มิฉะนั้นคำสั่งซื้อจะไม่ถูกกำหนดและไม่สามารถรับประกันได้

หากคุณไม่ได้กำหนดลำดับความสำคัญการควบคุมจะได้รับความสำคัญเริ่มต้นเป็น "10"

เมื่อสองควบคุมมีความสำคัญเหมือนกันแล้วคำสั่งที่เกิดจะไม่ได้กำหนดเพราะนั่นคือวิธีการทำงานของ PHP


2
โอ้ ... ง่ายมาก ไม่ทราบว่าค่าลำดับความสำคัญทำงานกับการควบคุมเช่นกัน ขอบคุณมาก!
xsonic

1

ทำความสะอาด

การวนซ้ำนั้นง่ายกว่าสำหรับการดีบักเนื่องจากคุณจะเห็นข้อมูลทีละขั้นตอน:

»จะเกิดอะไรขึ้นหลังจากฉันเพิ่มสิ่งนี้เข้าไปในสิ่งนั้น«

ดังนั้นเพียงแค่เริ่มต้นด้วยการทำความสะอาดและดูว่ามันได้รับการเพิ่ม

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

นี่เป็นคำตอบที่ถูกหรือไม่? ถ้าเป็นเช่นนั้นโปรดทำเครื่องหมายว่าเป็นวิธีแก้ปัญหา เครื่องหมายถูกอยู่ด้านล่างลูกศรลงคะแนน ถ้าไม่ใช่โปรดเพิ่มคำตอบของคุณเองและอธิบายขั้นตอนที่คุณได้ทำไป ขอบคุณ
ไกเซอร์

อ็อตโตโพสต์คำตอบที่ถูกต้องแล้ว (ซึ่งฉันยอมรับ) give a priority value to the controlsฉันคิดว่าไม่จำเป็นต้องมีคำอธิบายเพิ่มเติม ;-)
xsonic

เห็นด้วยอย่างแน่นอน :)
kaiser
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.