Personalizador de temas - orden de configuración

10

Si agrego más de 5 configuraciones a una sola sección, el orden de las configuraciones se vuelve extraño.

Por ejemplo:

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

Otros ejemplos en un pastebin: sin fecha de caducidad

Los colores están numerados del 1 al 7, pero en la configuración aparecen en ese orden: 2,1,3,4,6,5,7

¿Alguien ha experimentado lo mismo?

¿O alguien sabe cómo resolver esto?

    
pregunta xsonic 09.08.2012 - 14:32

2 respuestas

8

Si los necesita en un orden específico, asigne un valor de prioridad a los controles. De lo contrario, su orden no está definido y no se puede garantizar.

Si no define una prioridad, entonces el control obtiene la prioridad predeterminada de "10".

Cuando dos controles tienen la misma prioridad, entonces el orden resultante no está definido, ya que es cómo funciona PHP .

    
respondido por el Otto 09.08.2012 - 15:46
1

Limpiar

La iteración es mucho más fácil para la depuración, ya que verá información paso a paso:

  

»¿Qué sucede, después de agregar esto a eso?«

Así que simplemente comience con una limpieza y vea cómo se agrega.

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

Clasificación

La probabilidad es bastante alta, de que lo sortearás con mecanismos de clasificación php predeterminados . Eche un vistazo a la salida y vea lo que puede hacer con la ordenación simple de matrices (Sugerencia: puede escribir fácilmente cast (array) $object y (object) $array .

    
respondido por el kaiser 09.08.2012 - 15:17

Lea otras preguntas en las etiquetas