私はWordPressテーマカスタマイズAPIを使ったテーマに取り組んでいます。
テーマの初期インストールを除いて、すべてが正常に機能しています。
私のオプションのいくつかはテーマのインストール時にすぐに設定する必要があります。
振り返ってみると、add_settingオプションでデフォルトのargを設定するとすぐにオプションが設定されるはずですが、そうではありません。
これが私のコードの抜粋です。
add_action( 'customize_register', 'generate_customize_register' );
function generate_customize_register( $wp_customize ) {
// Add Layout section
$wp_customize->add_section(
'layout_section',
array(
'title' => __( 'Layout', 'generate' ),
'capability' => 'edit_theme_options',
'description' => __( 'Allows you to edit your theme\'s layout.', 'generate' ),
'priority' => 30
)
);
// Add Header Layout setting
$wp_customize->add_setting(
// ID
'generate_settings[header_layout_setting]',
// Arguments array
array(
'default' => 'fluid-header',
'type' => 'option'
)
);
// Add Header Layout control
$wp_customize->add_control(
// ID
'header_layout_control',
// Arguments array
array(
'type' => 'select',
'label' => __( 'Header Layout', 'generate' ),
'section' => 'layout_section',
'choices' => array(
'fluid-header' => __( 'Fluid / Full Width', 'generate' ),
'contained-header' => __( 'Contained', 'generate' )
),
// This last one must match setting ID from above
'settings' => 'generate_settings[header_layout_setting]',
'priority' => 1
)
);
}
ご覧のとおり、セクション、デフォルトの設定、およびその設定のコントロールを作成しました。
テーマカスタマイザに移動してオプションを保存すると、生成されたオプションに従って、generate_settingsテーブルがオプション付きでデータベースに作成されます。
ただし、テーマの新規インストール時にデータベースにアクセスした場合、generate_settingsテーブルは存在しません。テーマカスタマイザに移動してオプションを保存したときにのみ、設定がデータベースに追加されます。
私は何か悪いことをしていますか?テーマの新規インストール時にこれらの設定をデータベースに追加するためにできることはありますか?
ありがとうございます。
設定を取得するときにはデフォルト値を使用してください。デフォルトをデータベースに保存しないでください。
例:
$defaults = array (
'foo' => 'bar'
);
$options = get_option( 'my_theme_options', $defaults );
echo $options['foo'];