web-dev-qa-db-fra.com

Ajout d'un champ personnalisé au menu d'identité du site

Il semble par défaut que WordPress fournisse des champs pour le titre du site et le slogan.

Je comprends comment ajouter (par exemple) la possibilité de choisir un logo, en ajoutant add_theme_support( 'custom-logo' ); au fichier functions.php. Cependant, comment puis-je ajouter des champs pour "nom de la société" et "division de la société" ou pour tout champ de texte ne faisant pas déjà partie du support de thème WordPress?

3
Meyer Auslander

Vous devrez ajouter vos propres contrôles de personnalisation pour y parvenir.

Ainsi, par exemple, si vous souhaitez ajouter un nom de société, vous pouvez utiliser ce code:

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 Vous trouverez ici plus de documentation sur ce sujet: API de personnalisation de thème

5
Krzysiek Dróżdż

Tout cela fait partie de l’API Customizer ; vous allez créer une section , ajouter un setting à la section, puis ajouter un contrôleur au paramètre. Une fois terminé, vous le montrerez sur votre thème en utilisant get_theme_mod()

Pour votre exemple, vous ajouteriez le "nom de la société" au Customizer comme suit:

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' );

Ensuite, pour afficher cette valeur dynamique dans le thème, vous devez aller dans un fichier tel que header.php ou où vous le voulez, et utilisez:

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