Como adicionar imagens padrão ao controle de imagem do customizador de temas?

2

Estou tentando descobrir como posso pré-carregar um controle de imagem do personalizador de tema com as imagens selecionadas. É uma forma de apontar o controle para um diretório para que eles apareçam automaticamente na lista de uploads? Assim, o usuário pode selecionar uma imagem da lista, se quiser.

Se alguém pudesse explicar isso, eu agradeceria muito.

EDIT: Eu decidi adicionar mais informações junto com a recompensa.

Quando um usuário está usando o personalizador de temas (construído com a API do customizador de temas), e eles acabam decidindo que não gostam da imagem de fundo atual e não querem editá-la, eles escolhem a configuração da imagem de fundo / controle para mudá-lo. Bem, eu gostaria que um grupo de imagens aparecesse na lista suspensa por padrão, assim, se o usuário quiser, elas podem escolhê-lo, ou então fazer o upload de uma nova imagem. Então, quando eles selecionam o menu suspenso, ele terá 5 ou mais imagens pré-carregadas no interior.

Eu acho que isso provavelmente precisa ser feito apontando o controle para uma pasta, mas não sei como. Eu já vi isso antes, mas não consigo lembrar onde.

Estou usando o controle de imagem padrão no personalizador de temas.

    
por user1632018 30.04.2013 / 03:22

1 resposta

11

Nossa jornada começa here com a classe WP_Customize_Background_Image_Control , que é uma WP_Customize_Image_Control .

Eu imaginaria oferecer esses planos de fundo internos em uma nova guia ao lado das guias Upload New e Uploaded existentes. Existem pelo menos duas maneiras de conseguir o seguinte: criar sua própria classe modificada com base na classe WP_Customize_Background_Image_Control ou alterar seu comportamento padrão ao sequestrar o $wp_customize global. O primeiro é o caminho mais longo (embora talvez mais limpo), em que devemos, antes de mais nada, definir nosso novo controle:

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() {
    ...
}

Em seguida, remova o controle de imagem de fundo padrão que era registrado por padrão e adicionar nossa própria nova 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 );

A nova aba simplesmente faz eco de um conjunto de imagens pré-definidas que são enviadas com o seu tema, semelhante ao padrão tab_uploaded funciona com pequenos ajustes. Essa função seria a mesma para quando você estiver usando uma classe personalizada ou tentando uma abordagem mais rápida.

A abordagem mais rápida e mais compacta envolve fazer com que o controle padrão dance conforme a nossa sintonia após a inicialização da seguinte forma:

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

Novamente, se você optar por usar sua própria turma, você fará praticamente o mesmo, add_tab , o que significa print_tab_image em todos os seus cenários predefinidos. Bem direto. Tenho certeza que você pode melhorar ainda mais o código com várias probabilidades e fins, mas no geral isso parece o caminho a percorrer, eu acho.

Perguntas, ideias, pensamentos bem-vindos.

    
por soulseekah 07.05.2013 / 17:45