it-swarm.com.de

Wie füge ich Standardbilder zur Bildsteuerung des Theme Customizers hinzu?

Ich versuche herauszufinden, wie ich ein Theme Customizer-Bildsteuerelement mit von mir ausgewählten Bildern vorladen kann. Ist dies eine Möglichkeit, das Steuerelement auf ein Verzeichnis zu verweisen, damit es automatisch in der hochgeladenen Liste angezeigt wird? So kann der Benutzer ein Bild aus der Liste auswählen, wenn er es mag.

Wenn jemand dies erklären könnte, würde ich es sehr schätzen.

EDIT: Ich habe beschlossen, mehr Informationen zusammen mit dem Kopfgeld hinzuzufügen.

Wenn ein Benutzer den Theme-Customizer (der mit der Theme-Customizer-API erstellt wurde) verwendet und entscheidet, dass er das aktuelle Hintergrundbild nicht mag und es nicht bearbeiten möchte, wählt er die zu ändernden Einstellungen/Steuerelemente für das Hintergrundbild aus es. Nun, ich möchte, dass standardmäßig eine Gruppe von Bildern in der Dropdown-Liste angezeigt wird. Wenn der Benutzer eines möchte, kann er es auswählen oder ein neues Bild hochladen. Wenn sie also das Dropdown-Menü auswählen, sind im Inneren etwa 5 Bilder vorinstalliert.

Ich denke, dass dies wahrscheinlich getan werden muss, indem das Steuerelement auf einen Ordner zeigt, aber ich bin nicht sicher, wie. Ich habe das schon gesehen, aber ich kann mich nicht erinnern, wo.

Ich verwende die Standard-Bildsteuerung im Theme-Customizer.

2
user1632018

Unsere Reise beginnt here mit der Klasse WP_Customize_Background_Image_Control, die ein WP_Customize_Image_Control ist.

Ich könnte mir vorstellen, diese integrierten Hintergründe in einer neuen Registerkarte neben den vorhandenen Registerkarten Upload New und Uploaded anzubieten. Es gibt mindestens zwei Möglichkeiten, um Folgendes zu erreichen: Sie können entweder Ihre eigene modifizierte Klasse basierend auf der Klasse WP_Customize_Background_Image_Control erstellen oder ihr Standardverhalten ändern, indem Sie stattdessen den globalen $wp_customize hijacken. Ersteres ist der längere Weg (wenn auch vielleicht sauberer), bei dem wir zuerst unsere neue Kontrolle definieren müssen:

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

Entfernen Sie dann das Standard-Hintergrundbildsteuerelement, das standardmäßig registriert war, und fügen Sie unsere eigene neue Klasse hinzu:

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

Die neue Registerkarte gibt dann einfach eine Reihe vordefinierter Bilder aus, die mit Ihrem Design ausgeliefert werden, ähnlich wie der standardmäßige tab_uploaded mit geringfügigen Anpassungen funktioniert. Diese Funktion ist gleich, wenn Sie eine benutzerdefinierte Klasse verwenden oder den schnelleren Ansatz ausprobieren.

Bei der schnelleren und kompakteren Vorgehensweise wird das Standardsteuerelement nach der Initialisierung wie folgt angepasst:

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

Wenn Sie sich für die Verwendung Ihrer eigenen Klasse entscheiden, tun Sie fast dasselbe: add_tab, der auf allen voreingestellten Hintergründen einen print_tab_image ausführt. Ziemlich einfach. Ich bin mir sicher, dass Sie den Code mit verschiedenen Widrigkeiten und Zwecken weiter verbessern können, aber insgesamt scheint dies der richtige Weg zu sein.

Fragen, Ideen, Gedanken willkommen.

Default background images in Theme Customizer

11
soulseekah