J'ai des options de thème enregistrées en tant que données sérialisées. Et j'ai nommé le nom de l'option en obtenant le nom du thème.
$theme = wp_get_theme();
$settings = sanitize_title($theme).'-options'; // do not change!
Mais quand j'essaie de passer la variable $ settings avec ou sans concaténation. Il se termine avec cette erreur fatale.
Fatal error: Call to a member function check_capabilities() on a non-object in C:\Users\SISIR\Dropbox\wamp\www\l\wp-includes\class-wp-customize-control.php on line 160
Vérifiez la section $settings.'[skin']
qui ne fonctionne pas, mais lorsque je remplace cette partie du code par 'lead_capture_theme_option[skin]'
, cela fonctionne. L’erreur fatale elle-même est également déconcertante.
add_action( 'customize_register', 'lead_capture_theme_customize_register', 11 );
function lead_capture_theme_customize_register($wp_customize) {
$theme = wp_get_theme();
$settings = sanitize_title($theme).'-options'; // do not change!
// var_dump($settings);
$wp_customize->add_section( 'lead_cap_color_scheme', array( 'title' => __( 'Color Scheme', 'themename' ),
'priority' => 35
)
);
$wp_customize->add_setting( $settings.'[skin]', array( 'default' => 'light',
'type' => 'theme_mod',
'capability' => 'edit_theme_options' )
);
$wp_customize->add_control( 'lead_capture_theme_option[skin]', array( 'label' => 'Select a Color Scheme',
'type' => 'select',
'choices' => array('default', 'custom'),
'section' => 'lead_cap_color_scheme',
'settings' => 'lead_capture_theme_option[skin]'
)
);
$wp_customize->add_setting( 'lead_capture_theme_option[logo]', array(
'type' => 'theme_mod',
'capability' => 'edit_theme_options'
)
);
$wp_customize->add_control(
new WP_Customize_Image_Control( $wp_customize, 'lead_capture_theme_option[logo]', array(
'label' => 'Upload Logo',
'section' => 'lead_cap_color_scheme'
)
)
);
}
Merci à @chip_bennett de le signaler!
J'ai enregistré les paramètres à l'aide des paramètres api et j'essayais d'ajouter les paramètres de personnalisation de l'API en fonction du type de theme_mod
, c'est pourquoi il affichait l'erreur. Après avoir changé le 'type' => 'theme_mod'
en 'type' => 'option'
, cela a fonctionné :)