web-dev-qa-db-ja.com

サイトIDメニューにカスタムフィールドを追加する

デフォルトではWordPressはsite-titleとtaglineのためのフィールドを提供しているようです。

私は(例えば)ロゴを選択するオプションを追加する方法を理解しています、add_theme_support( 'custom-logo' );をfunctions.phpファイルに追加します。しかし、 'company name'と 'company division'のフィールド、またはWordPressテーマサポートの一部ではないテキストフィールドのフィールドを追加するにはどうすればよいですか。

3
Meyer Auslander

そのためには独自のカスタマイザコントロールを追加する必要があります。

たとえば、会社名を追加したい場合は、次のコードを使用できます。

function my_register_additional_customizer_settings( $wp_customize ) {
    $wp_customize->add_setting(
        'my_company_name',
        array(
            'default' => '',
            'type' => 'option', // you can also use 'theme_mod'
            'capability' => 'edit_theme_options'
        ),
    );

    $wp_customize->add_control( new WP_Customize_Control(
        $wp_customize,
        'my_company_name',
        array(
            'label'      => __( 'Company name', 'textdomain' ),
            'description' => __( 'Description for your field', 'textdomain' ),
            'settings'   => 'my_company_name',
            'priority'   => 10,
            'section'    => 'title_tagline',
            'type'       => 'text',
        )
    ) );
}
add_action( 'customize_register', 'my_register_additional_customizer_settings' );

PS。ここでこのトピックに関するより多くのドキュメントを見つけることができます: テーマカスタマイズAPI

5

これは カスタマイザAPIのすべての部分です ; section を作成し、 setting をそのセクションに追加し、そして controller をその設定に追加します。完了すると、 get_theme_mod() を使用してテーマにそれを表示します。

あなたの例では、次のようにカスタマイザに「会社名」を追加します。

function mytheme_customize_register( $wp_customize ) {

    $wp_customize->add_section( 'mytheme_company_section' , array(
        'title'      => __( 'Additional Company Info', 'mytheme' ),
        'priority'   => 30,
    ));

    $wp_customize->add_setting( 'mytheme_company-name', array());
    $wp_customize->add_control( new WP_Customize_Control(
        $wp_customize,
        'mytheme_company_control',
            array(
                'label'      => __( 'Company Name', 'mytheme' ),
                'section'    => 'mytheme_company_section',
                'settings'   => 'mytheme_company-name',
                'priority'   => 1
            )
        )
    );

    // ..repeat ->add_setting() and ->add_control() for mytheme_company-division
}
add_action( 'customize_register', 'mytheme_customize_register' );

それからテーマの中でこの動的な値を表示するために、あなたはheader.phpのようなファイルまたはあなたがそれを望むところに行き、そして使用するでしょう:

echo get_theme_mod( "mytheme_company-name" );
2
David Sword