테마 맞춤 설정 도구-설정 순서


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

페이스트 빈의 추가 예-만료 시간 없음

색상은 1에서 7까지 번호가 매겨 지지만 설정에서 2,1,3,4,6,5,7의 순서로 나타납니다.

아무도 같은 경험을 했습니까?

아니면 아무도 이것을 해결하는 방법을 알고 있습니까?


물론, "cusomizer"라는 철자가 있습니까? ;)
kaiser

1
thx ... 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 정렬 메커니즘으로 문제를 해결할 가능성이 매우 높습니다 . 출력을 살펴보고 간단한 배열 정렬로 수행 할 수있는 작업을 확인하십시오 (힌트 : cast (array) $object 및을 쉽게 입력 할 수 있습니다 (object) $array.


당신의 도움을 주셔서 감사합니다. 이 시점에서 그것은 모두 올바른 순서입니다. 순서는 핵심 클래스의 어느 곳에서나 혼합되어야한다고 생각합니다. 그러나 아직 추적 할 수 없었습니다.
xsonic

이것이 지금 정답입니까? 그렇다면 해결책으로 표시하십시오. 확인 표시는 투표 화살표 바로 아래에 있습니다. 그렇지 않은 경우 자신의 답변을 추가하고 해결 방법을 설명하십시오. 감사.
kaiser

오토는 이미 정답을 올렸다. give a priority value to the controls, 나는 더 이상의 설명이 필요 없다고 생각한다 ;-)
xsonic

:)
kaiser
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.