web-dev-qa-db-fra.com

Comment ajouter des images par défaut au contrôle des images du personnalisateur de thèmes?

J'essaie de comprendre comment pré-charger un contrôle d'image de personnalisateur de thème avec les images que j'ai sélectionnées. S'agit-il d'un moyen de pointer le contrôle sur un répertoire afin qu'ils apparaissent automatiquement dans la liste téléchargée? Ainsi, l'utilisateur peut sélectionner une image dans la liste s'il l'aime bien.

Si quelqu'un pouvait expliquer cela, je l'apprécierais grandement.

EDIT: J'ai décidé d'ajouter plus d'informations avec la prime.

Lorsqu'un utilisateur utilise le personnaliseur de thème (construit avec l'API de personnalisation de thème), et finit par décider qu'il n'aime pas l'image d'arrière-plan actuelle et qu'il ne veut pas l'éditer, il choisit le paramètre/contrôle de l'image de fond à modifier il. Eh bien, j'aimerais qu'un groupe d'images apparaisse dans le menu déroulant par défaut, donc si l'utilisateur le souhaite, il peut le choisir, ou bien télécharger une nouvelle image. Ainsi, lorsqu'ils choisiront la liste déroulante, il aura environ 5 images pré-chargées à l'intérieur.

Je pense que cela doit probablement être fait en pointant le contrôle sur un dossier, mais je ne sais pas comment. J'ai déjà vu cela auparavant, mais je ne me souviens plus où.

J'utilise le contrôle d'image par défaut dans le personnalisateur de thème.

2
user1632018

Notre voyage commence here avec la classe WP_Customize_Background_Image_Control, qui est un WP_Customize_Image_Control .

J'imaginerais offrir ces arrière-plans intégrés dans un nouvel onglet aux côtés des onglets Upload New et Uploaded existants. Il existe au moins deux façons d'obtenir les résultats suivants: soit créer votre propre classe modifiée basée sur la classe WP_Customize_Background_Image_Control, soit modifier son comportement par défaut en détournant plutôt le $wp_customize global. Le premier est le chemin le plus long (bien que peut-être plus propre), dans lequel nous devons tout d’abord définir notre nouveau contrôle:

class WP_Customize_Background_Image_Control_Defaults extends WP_Customize_Background_Image_Control {
    public function __construct( $manager ) {
    ...
        $this->add_tab( 'builtins', __('Built-ins'), array( $this, 'tab_builtins' ) );

    ...
    public function tab_builtins() {
    ...
}

Ensuite, supprimez le contrôle d'image d'arrière-plan par défaut qui était enregistré par défaut et ajoutez notre propre nouvelle classe:

add_action( 'customize_register', function( $wp_customize ) {
    /* Substitute the default control for our new one */
    $wp_customize->remove_control( 'background_image' );
    $wp_customize->add_control( new WP_Customize_Background_Image_Control_Defaults( $wp_customize ) );
}, 11, 1 );

Le nouvel onglet ferait alors simplement écho à un ensemble d'images prédéfinies fournies avec votre thème, comme si la valeur par défaut tab_uploaded fonctionnait avec des réglages mineurs. Cette fonction serait la même lorsque vous utilisez une classe personnalisée ou essayez l'approche plus rapide.

L’approche la plus rapide et la plus compacte consiste à faire en sorte que le contrôle par défaut danse notre mélodie après l’initialisation de la manière suivante:

add_action( 'customize_register', function( $wp_customize ) {

    $control = $wp_customize->get_control( 'background_image' );
    $control->add_tab( 'builtins', __('Built-ins'), function() {
        /* Supply a list of built-in background that come with your theme */
        $backgrounds = array(
            'images/bg-01.png', 'images/bg-02.png', ...
        );

        global $wp_customize;
        $control = $wp_customize->get_control( 'background_image' );

        foreach ( (array) $backgrounds as $background )
            $control->print_tab_image( esc_url_raw( get_stylesheet_directory_uri() . '/' . $background ) );

    } );

}, 11, 1 );

Encore une fois, si vous choisissez d'utiliser votre propre classe, vous feriez à peu près la même chose, add_tab qui crée un print_tab_image sur tous vos arrière-plans prédéfinis. Assez simple. Je suis sûr que vous pouvez encore améliorer le code avec des cotes variables, mais dans l’ensemble, cela semble être la voie à suivre, à mon avis.

Questions, idées, pensées bienvenues.

Default background images in Theme Customizer

11
soulseekah