web-dev-qa-db-ja.com

インストール時のテーマカスタマイズAPIオプション

私は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テーブルは存在しません。テーマカスタマイザに移動してオプションを保存したときにのみ、設定がデータベースに追加されます。

私は何か悪いことをしていますか?テーマの新規インストール時にこれらの設定をデータベースに追加するためにできることはありますか?

ありがとうございます。

3
Tom

設定を取得するときにはデフォルト値を使用してください。デフォルトをデータベースに保存しないでください。

例:

$defaults = array (
    'foo' => 'bar'
);

$options = get_option( 'my_theme_options', $defaults );

echo $options['foo'];
4
fuxia