web-dev-qa-db-fra.com

Impossible de passer la variable dans le personnaliseur de thème add_setting ()

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'
                    )
                    )
                                                    );                                          
    }
1
Sisir

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é :)

2
Sisir