Tùy biến chủ đề - thứ tự cài đặt


10

Nếu tôi thêm nhiều hơn 5 Cài đặt vào một phần, thứ tự của các cài đặt sẽ trở nên kỳ lạ.

Ví dụ:

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

Ví dụ khác trong một pastebin - không có thời gian hết hạn

Các màu được đánh số từ 1 đến 7, nhưng trong cài đặt chúng xuất hiện theo thứ tự đó: 2,1,3,4,6,5,7

Có ai có kinh nghiệm tương tự?

Hoặc có ai thậm chí biết làm thế nào để giải quyết điều này?


Chắc chắn, đó là đánh vần "cusomizer"? ;)
kaiser

1
thx ... đã sửa = D
xsonic

Câu trả lời:


9

Nếu bạn cần chúng theo một thứ tự cụ thể, sau đó đưa ra một giá trị ưu tiên cho các điều khiển. Mặt khác, thứ tự của họ không được xác định và không thể được đảm bảo.

Nếu bạn không xác định mức ưu tiên, thì điều khiển sẽ có mức ưu tiên mặc định là "10".

Khi hai điều khiển có cùng mức ưu tiên, thì thứ tự kết quả sẽ không được xác định, bởi vì đó là cách PHP hoạt động .


2
Ôi ... thật đơn giản. Không biết giá trị ưu tiên hoạt động trên các điều khiển là tốt. Cảm ơn rất nhiều!
xsonic

1

Dọn dẹp

Lặp lại dễ dàng hơn nhiều để gỡ lỗi, vì bạn sẽ thấy thông tin từng bước:

»Điều gì xảy ra, sau khi tôi thêm cái này vào đó?«

Vì vậy, chỉ cần bắt đầu với một dọn dẹp và xem làm thế nào nó được thêm vào.

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ắp xếp

Cơ hội là khá cao, bạn sẽ có được xung quanh nó với các cơ chế sắp xếp php mặc định . Chỉ cần nhìn vào đầu ra và xem những gì bạn có thể làm với cách sắp xếp mảng đơn giản (Gợi ý: Bạn có thể dễ dàng nhập cast (array) $object(object) $array.


Cảm ơn bạn đã giúp đỡ. Tại thời điểm này, tất cả theo đúng thứ tự. Thứ tự phải được trộn lẫn bất cứ nơi nào trong các lớp cốt lõi, tôi nghĩ. Nhưng tôi không thể theo dõi nó xuống được.
xsonic

Đây có phải là câu trả lời đúng? Nếu vậy, xin vui lòng đánh dấu nó là giải pháp. Dấu kiểm ngay bên dưới mũi tên biểu quyết. Nếu không, vui lòng thêm câu trả lời của riêng bạn và giải thích các bước bạn đã thực hiện để giải quyết. Cảm ơn.
kaiser

Otto đã đăng câu trả lời đúng (mà tôi đã chấp nhận). give a priority value to the controls, Tôi nghĩ không cần giải thích gì thêm ;-)
xsonic

Hoàn toàn đồng ý :)
kaiser
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.