テーマオプションをシリアル化されたデータとして保存しました。そして、私はテーマ名を得ることによってオプション名を命名しました。
$theme = wp_get_theme();
$settings = sanitize_title($theme).'-options'; // do not change!
しかし、$ settings変数を連結の有無にかかわらず渡そうとしています。それはこの致命的なエラーで終わります。
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
機能しない$settings.'[skin']
セクションを確認してください。ただし、コードのその部分を'lead_capture_theme_option[skin]'
に置き換えると機能します。致命的なエラー自体も不可解です。
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'
)
)
);
}
それを指摘するために@chip_bennettに感謝します!
Settings apiを使用して設定を登録し、theme_mod
の種類別にcustomize apiの設定を追加しようとしていたため、エラーが表示されました。 'type' => 'theme_mod'
を'type' => 'option'
に変更した後、それは働いた:)