1つのセクションに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の順に表示されます。
誰かが同じことを経験したことがありますか?
それともこれを解決する方法を誰かが知っていますか?
特定の順序でそれらが必要な場合は、コントロールに優先順位の値を付けます。そうでなければ、それらの順序は定義されておらず、保証されません。
優先順位を定義しないと、コントロールはデフォルトの優先順位 "10"を取得します。
2つのコントロールが同じ優先順位を持つ場合、結果の順序は未定義になります。これは how PHPの動作 であるためです。
ステップバイステップの情報が表示されるので、反復はデバッグがはるかに簡単です。
"これを追加した後、どうなりますか?"
そのため、単純にクリーンアップから始めて、 how を参照してください。
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
を簡単に入力できます。