wake-up-neo.net

Theme Customizer: So erstellen Sie ein Panel mit mehreren Ebenen

Gibt es eine Möglichkeit, im Theme Customizer ein untergeordnetes Bedienfeld zu erstellen (z. B. Wurzeln von Pflanzen)? Mein Thema, das ich entwickelt habe, scheint komplizierter zu sein. Ich denke, wenn wir ein Deep-Level-Sub-Panel erstellen können, wird unsere Customizer-Seite nicht chaotisch aussehen, unser Benutzer wird unser Theme einfacher anpassen und wir werden in der Lage sein, das kompliziertere WordPress-Theme einfacher zu machen. Bilder unten beschreiben, was meine Idee ist ...

 Theme Customizer concept that I found on online tutorials  Here is sub panel that I wan to create 

Leider habe ich versucht, nach diesem zu suchen, aber ich konnte nur einen Weg finden, um ein einstufiges Panel im Theme Customizer zu erstellen. Dies habe ich in einem anderen Thread gefunden und konnte keinen Weg finden, dies zu tun Subpanel tiefer. Könnten Sie bitte etwas Licht in meinem Leben beschatten?

Update : Der folgende Code ist ein Code, den ich zum Erstellen von Bedienfeldern und Steuerelementen verwende, wie Bild 1, das einstufiges Bedienfeld ist. sie alle funktionieren gut.

$wp_customize->add_panel('panel1',
        array(
            'title' => 'Panel 1',
            'priority' => 1,
            )
        );
        $wp_customize->add_section( 'section1',
            array(
                'title' => 'This is section 1',
                'priority' => 1,
                'panel' => 'panel1'
                )
            );
            $wp_customize->add_setting('field1', array('default' => 'default text'));
            $wp_customize->add_control('field1', array(
                'label' => 'Text field',
                'section' => 'section1',
                'type' => 'text',
                )
            );

Mein Problem ist, dass ich ein neues Panel erstellen und es in einem anderen Panel belassen möchte, wodurch es wie eine Root-Hierarchie aussieht (Bild 2). Ich denke, dass wir viel mehr machen können, wenn wir so etwas tun können leistungsstarker Theme Customizer. Ich habe dann versucht, diese Idee zu verwirklichen und versuchte, meinen Code neu zu schreiben. Leider hat es nicht funktioniert. Bitte überprüfen Sie die folgenden.

$wp_customize->add_panel('panel1',
        array(
            'title' => 'Panel 1',
            'priority' => 1,
            )
        );
        $wp_customize->add_section( 'section1',
            array(
                'title' => 'This is section 1',
                'priority' => 1,
                'panel' => 'panel1'
                )
            );
            $wp_customize->add_setting('field1', array('default' => 'default text'));
            $wp_customize->add_control('field1', array(
                'label' => 'Text field',
                'section' => 'section1',
                'type' => 'text',
                )
            );
        // I used the code below with a little hope that it will help me accomplish my idea, but it didn't work T^T.
        $wp_customize->add_panel('panel1_1',
            array(
                'title' => 'Panel 1.1',
                'priority' => 2,
                'panel' => 'panel1' // I tried adding this line of code in order to let it depend on another panel
                )
            );
            $wp_customize->add_section( 'section1_1',
            array(
                'title' => 'This is section 1',
                'priority' => 1,
                'panel' => 'panel1_1'
                )
            );
            $wp_customize->add_setting('field1_1', array('default' => 'default text'));
            $wp_customize->add_control('field1_1', array(
                'label' => 'Text field',
                'section' => 'section1_1',
                'type' => 'text',
                )
            );

Könnten Sie mir bitte die Lösung geben, ich kann nicht herausfinden, wie das Panel wie eine Stammhierarchie aussehen soll. Jede Hilfe wäre dankbar :)

4

Für alle, die hierher kommen, um das zu suchen, war ich in der Lage, es zu tun, nachdem ich ein paar Stunden damit gekämpft hatte.

Der Code ist ein bisschen umfangreich, also wollte ich hier nichts posten (Mods können mich jetzt gerne informieren, wenn das besser wäre). Stattdessen habe ich ein Gist erstellt: https://Gist.github.com/OriginalEXE/9a6183e09f4cae2f30b006232bb154af

Damit können Sie im Grunde die Eigenschaften panel für Panels (zum Verschachteln von Panels unter Panels) und section für Sektionen (zum Verschachteln von Sektionen unter Sektionen) festlegen.

Anmerkungen:

  • Der PHP-Code enthält ein Beispiel für das Erstellen von Panels/Unterpanels/Abschnitten/Unterabschnitten. Es ist erwähnenswert, dass Sie mithilfe der von mir erstellten Unterklasse neue Panels/Abschnitte instanziieren, anstatt $wp-customize->add_panel direkt aufzurufen und ihm ein Konfigurationsarray zu übergeben.
  • JS- und CSS-Dateien müssen nicht geändert werden. Wenn Sie sich gefragt haben, warum CSS benötigt wird, können Sie die Animation beim Übergang von Panels zu Unterpanels und von Abschnitten zu Unterabschnitten korrigieren.
  • Stellen Sie beim Erstellen von Unterabschnitten sicher, dass Sie auch eine panel -Eigenschaft hinzufügen, die mit der panel des übergeordneten Abschnitts identisch sein sollte

Ich habe versucht, dies mit so wenig Code wie möglich zu tun, ohne irgendetwas zu überschreiben, das den Code anderer Leute vermasseln könnte. Einige Umgestaltungen könnten erforderlich sein, wenn sie die Logik in zukünftigen Versionen ändern. Ich habe sie so zukunftssicher wie möglich gemacht.

3
OriginalEXE

Im Moment ist es einfach nicht möglich, mehr als Bedienfelder, Abschnitte und Steuerelemente zu haben. Die Erweiterung dieses Systems würde eine umfangreiche Programmierung bei WP erfordern. Angesichts der geringen Größe des Customizers können Sie sich auch leicht verirren, wenn Sie über so viele verschachtelte Bedienfelder verfügen. Also ist es wahrscheinlich auch nicht wünschenswert.

2
cjbj