¿Cómo agregar imágenes predeterminadas al control de imagen del personalizador de temas?

2

Estoy tratando de averiguar cómo puedo precargar un control de imagen del personalizador de tema con las imágenes que he seleccionado. ¿Es una forma de señalar el control a un directorio para que aparezcan automáticamente en la lista cargada? Por lo tanto, el usuario puede seleccionar una imagen de la lista si lo desea.

Si alguien pudiera explicar esto, se lo agradecería enormemente.

EDITAR: he decidido agregar más información junto con la recompensa.

Cuando un usuario está utilizando el personalizador de tema (creado con la API del personalizador de tema), y terminan decidiendo que no les gusta la imagen de fondo actual y que no la editarán, por lo que eligen la configuración de la imagen de fondo / Control para cambiarlo. Bueno, me gustaría que un grupo de imágenes aparezca en el menú desplegable de manera predeterminada, de modo que si el usuario quiere una, puede elegirla o, si no, cargar una nueva imagen. Por lo tanto, cuando seleccionen el menú desplegable, tendrán alrededor de 5 imágenes precargadas dentro.

Creo que esto debe hacerse apuntando el control a una carpeta, pero no estoy seguro de cómo hacerlo. He visto esto antes, pero no puedo recordar dónde.

Estoy usando el control de imagen predeterminado en el personalizador de temas.

    
pregunta user1632018 30.04.2013 - 03:22

1 respuesta

11

Nuestro viaje comienza here con la clase WP_Customize_Background_Image_Control , que es un WP_Customize_Image_Control .

Me imagino ofreciendo estos fondos incorporados en una nueva pestaña junto con las pestañas existentes Upload New y Uploaded . Existen al menos dos formas de lograr lo siguiente: crear su propia clase modificada basada en la clase WP_Customize_Background_Image_Control , o alterar su comportamiento predeterminado mediante el secuestro del $wp_customize global. El primero es el camino más largo (aunque quizás más limpio), en el que en primer lugar deberíamos definir nuestro nuevo control:

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

Luego elimine el control de imagen de fondo predeterminado que era registrado de forma predeterminada y agregue nuestra nueva clase:

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

La nueva pestaña simplemente hará eco de un conjunto de imágenes predefinidas que se incluyen con su tema, similar a la forma predeterminada de tab_uploaded funciona con ajustes menores. Esta función sería la misma tanto si estás usando una clase personalizada como si intentas un enfoque más rápido.

El enfoque más rápido y más compacto consiste en hacer que el control predeterminado se adapte a nuestra melodía después de la inicialización, de este modo:

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

Nuevamente, si eliges usar tu propia clase, harías lo mismo, add_tab , que hace un print_tab_image en todos tus fondos preestablecidos. Muy claro. Estoy seguro de que puedes mejorar aún más el código con varias probabilidades y finalidades, pero creo que, en general, parece que este es el camino a seguir.

Preguntas, ideas, pensamientos bienvenidos.

    
respondido por el soulseekah 07.05.2013 - 17:45

Lea otras preguntas en las etiquetas