Hallo Leute! :-)
Ich bin neu hier und hoffentlich im richtigen Bereich. Ich brauche ganz dringend Hilfe von Experten! [Ich weiß es ist viel Text, aber ich möchte mein Problem detailliert beschreiben und bin mir sicher, die Antwort ist für euch in ein bis zwei Zeilen Code erklärt.]
Derzeit bin ich dabei einen Shop (WooCommerce) für Bekannte von mir auf die Beine zustellen. Neben der Shopkonfiguration habe ich das Standard Shop Template "Storefront" etwas umgestaltet und angepasst. Dabei ist ein wichtiger Punkt unser Slider als Header. Und hier kommt mein großes Problem.
Ich wollte dem Shop Team die Möglichkeit geben, die einzelnen Slides inkl. Beschriftung und URL-Angabe ganz einfach im Wordpress Dashboard bei den Theme Einstellungen selbst zu bearbeiten.
Dazu hab ich mir eine weiter Vorlage aus dem Netz gesucht - WordPress Settings Library (https://github.com/oaattia/Wordpress-Settings-Library)! Die ist meiner Meinung nach echt klasse, wenn man noch kein Experte für WordPress ist. Ich habe mich hier also das richtige rausgesucht, um unter den Theme Optionen noch einen Reiter "Einstellungen" hinzuzufügen, bei denen die Shop Besitzer später Logo und den Slider ganz einfach ändern sollen.
Die Aufbereitung der Einstellungs Page war sehr einfach. Folgender Code benutze ich für die .php Datei:
<?php namespace PaintCloud\WP\Settings;
$page = new Page('Einstellungen');
$settings = array();
// Tabs// ------------------------//$settings['Allgemeines'] = array();$settings['Slider'] = array();
// Tab One - Section One// ------------------------//$settings['Allgemeines']['Logo'] = array('info' => 'Hier kannst du das Logo der Website hochladen.');
$fields = array();$fields[] = array( 'type' => 'upload', 'name' => 'nav_logo', 'label' => 'Logo' );
$settings['Allgemeines']['Logo']['fields'] = $fields;
// Tab Two - Section Two// ------------------------//$settings['Slider']['Slider Einstellungen'] = array('info' => 'Hier kannst du bis zu 5 Slider definieren. Die Bilder muss genau 2000 x 500 Pixel groß sein und der Titel darf nicht länger als 150 Zeichen lang sein, um optimal dargestellt zu werden.');
$fields = array();
$my_multi_fields = array();
$my_multi_fields[] = array( 'type' => 'upload', 'name' => 'slide_image', 'label' => 'Slider Bild', );
$my_multi_fields[] = array( 'type' => 'text', 'name' => 'slide_title', 'label' => 'Titel' );
$my_multi_fields[] = array( 'type' => 'text', 'name' => 'slide_url', 'label' => 'URL' );
$fields[] = array( 'type' => 'multi', 'name' => 'slide_multi', 'label' => 'Slider Optionen', 'id' => 'slide_multi', // (optional, will default to name) 'limit' => 5, // (optional, will default to unlimited) 'fields' => $my_multi_fields );
$settings['Slider']['Slider Einstellungen']['fields'] = $fields;
new OptionPageBuilderTabbed($page, $settings);
Alles anzeigen
Im Dashboard sieht das ganze dann auch so aus:
Ich habe also für das Logo ein normales Upload Feld benutzt und für die Slider ein Multi-Array. Das für das Logo abgespeicherte Bild kann ich ohne Probleme in das Design einbinden.
<img src="<?php echo get_option('nav_logo'); ?>" />
Mein Problem
Ich weiß nicht, wie ich auf das Multi Array zugreifen kann. Ich habe unterschiedlichste Ansätze versucht, aber ich weiß nicht wie ich die Daten abrufen kann. Dass das Ganze mit einer foreach Schleife gehen muss, ist mir klar. Allerdings fehlt mir die Syntax (ist es das?), um die abgespeicherten Werte abzurufen.
Ich habe euch die verwendete Library ja mit verlinkt - vll kennt jemand von euch das bereits oder könnte sich das vielleicht kurz durchschauen. Es gab früher dazu ein Video auf YouTube, dieses wurde aber vom Benutzer entfernt. Leider! Ich such mich nun seit 2 Wochen zum Deppen und habe leider im RL keine Leute, die sich damit auskennen.
Ich bin für jede Hilfe dankbar!! Wenn es anscheinend doch so viel Aufwand ist und jemand sich dem annehmen möchte, bin ich gerne bereit auch einen kleinen Beitrag als Entschädigung zu geben.
Ich bitte euch herzlichst um Hilfe, da der Shop Anfang Oktober eröffnen sollte.
Vielen Dank schon im voraus! Wenn ihr noch Informationen benötigt, gebt mir bitte Bescheid!