So erweitern Sie WP_Customize_Control

Ich bin auf der Suche nach einer Möglichkeit, dem benutzerdefinierten Live-Vorschau- Panel eine neue Art von Steuerelement hinzuzufügen. Ich habe gesehen, wie man neue Abschnitte mit add_action( 'customize_register'...

Die Steuerung, die ich implementieren möchte, ist eine andere Art von Farbauswahl. In einem früheren Beitrag erfahren wir, wie man coreklassen erweitern kann, um Widgets hinzuzufügen, aber was mir hier fehlt, ist ein Hook, mit dem ich mein Objekt in den Geltungsbereich bringen kann – WP_Customize_Palette_Control. Beim

Sie können die Anfänge des Codes hier sehen . Dieser Code befindet sich in der Datei functions.php meines Themes.

Danke für jede Hilfe. rauben

Habe gerade den Code aktualisiert. Jetzt habe ich require_once , um die classn require_once . So, jetzt habe ich keine PHP-Fehler, aber meine neue Kontrolle HTML erscheint nicht.

 json['removed'] = $this->removed; if ( $this->context ) $this->json['context'] = $this->context; } public function render_content() { ?>  add_section( 'themename_color_scheme', array( 'title' => __( 'Color Scheme', 'themename' ), 'priority' => 35, ) ); $wp_customize->add_setting( 'themename_theme_options[color_scheme]', array( 'default' => 'some-default-value', 'type' => 'option', 'capability' => 'edit_theme_options', ) ); $wp_customize->add_control( 'themename_color_scheme', array( 'label' => __( 'Color Scheme', 'themename' ), 'section' => 'themename_color_scheme', 'settings' => 'themename_theme_options[color_scheme]', 'type' => 'palette', 'choices' => array( 'value1' => 'Choice 1', 'value2' => 'Choice 2', 'value3' => 'Choice 3', ), ) ); } add_action( 'customize_register', 'sci_customize_controls_init' ); 

Solutions Collecting From Web of "So erweitern Sie WP_Customize_Control"

Beispiel und class für die Verwendung

Sie können auf meinem aktuellen Thema sehen, wie es möglich ist, dies zu verwenden. Sie können auch die class verwenden. Sehen Sie sich diese class auf Github an und überprüfen Sie die functions.php um dies zu berücksichtigen.

Starten & init

Sie können Ihre benutzerdefinierten Einstellungen für den Design-Customizer über den customize_register Hook registrieren:

 add_action( 'customize_register', 'themedemo_customize' ); function themedemo_customize($wp_customize) { $wp_customize->add_section( 'themedemo_demo_settings', array( 'title' => 'Demonstration Stuff', 'priority' => 35, ) ); $wp_customize->add_setting( 'some_setting', array( 'default' => 'default_value', ) ); $wp_customize->add_control( 'some_setting', array( 'label' => 'Text Setting', 'section' => 'themedemo_demo_settings', 'type' => 'text', ) ); $wp_customize->add_setting( 'some_other_setting', array( 'default' => '#000000', ) ); $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'some_other_setting', array( 'label' => 'Color Setting', 'section' => 'themedemo_demo_settings', 'settings' => 'some_other_setting', ) ) ); } 

In-Themen-Nutzung:

Verwenden Sie es, wie im folgenden Beispiel ↓:

 echo 'some_setting => ' .get_theme_mod( 'some_setting', 'default_value' )."\n"; echo 'some_other_setting => ' .get_theme_mod( 'some_other_setting', '#000000' )."\n"; echo 'non_existent_setting => '.get_theme_mod( 'non_existent_setting', 'default_value' )."\n"; 

Anpassungen

Sie können das Steuerelement auch ändern:

 $wp_customize->add_control( 'themename_color_scheme', array( 'label' => __( 'Color Scheme', 'themename' ), 'section' => 'themename_color_scheme', 'settings' => 'themename_theme_options[color_scheme]', 'type' => 'radio', 'choices' => array( 'value1' => 'Choice 1', 'value2' => 'Choice 2', 'value3' => 'Choice 3', ), ) ); 

Der Standardsteuerungstyp ist text . Es erstellt ein Textfeld-Steuerelement. Ein weiterer Kontrolltyp sind dropdown-pages , die eine Dropdown-Liste der WordPress-Seiten erstellen.

Aber das ist nicht alles. Es gibt tatsächlich mehrere mehr, aber weil sie so individuell sind, werden sie anders deklariert.

Dieser benutzt OOP:

 $wp_customize->add_control( new WP_Customize_Color_Control( $wp_customize, 'link_color', array( 'label' => __( 'Link Color', 'themename' ), 'section' => 'themename_color_scheme', 'settings' => 'themename_theme_options[link_color]', ) ) ); 

Zusätzliche Bemerkungen:

  • WP_Customize_Upload_Control – Dies gibt Ihnen eine Upload-Box für Dateien. Allerdings wirst du das wahrscheinlich nicht direkt verwenden, du wirst es für andere Dinge erweitern wollen … wie: WP_Customize_Image_Control – Damit WP_Customize_Image_Control du die WP_Customize_Image_Control und die Uploader-Box. Es erweitert den Upload-Controller. Sie können es in Aktion auf dem benutzerdefinierten Hintergrund anzeigen, wo ein Benutzer eine neue Datei hochladen kann, um das Hintergrundbild zu sein.
  • WP_Customize_Header_Image_Control – Wegen der Größenänderung des Headers benötigt es ein wenig spezielle Handhabung und Anzeige, so dass der WP_Customize_Header_Image_Control den WP_Customize_Header_Image_Control erweitert
  • WP_Customize_Image_Control , um diese functionalität hinzuzufügen. Sie können es in Aktion auf der benutzerdefinierten Kopfzeile sehen, wo ein Benutzer eine neue Datei hochladen kann, um das Headerbild zu sein.

Sie können mehr über “Theme Customizer” in ottos blog finden .

Update 11/06/2012

Live Beispiel für Lese-Möglichkeiten und weitere Beispiele, siehe das offene Repo für die Quelle und das Doku.

Update 15.01.2013

Wir haben ein Repository für Github mit benutzerdefinierter class erstellt , um es einfach und schnell zu verwenden. Vielleicht können Sie es nur nutzen oder mit Ihren Ideen und Lösungen voranbringen.

Ok, hier ist, wie es geht. Trennen Sie Ihre Steuerelementklasse (n) von einer oder mehreren neuen Dateien.

Sie haben eine function oder Methode süchtig auf customize_register, oder? In dieser function oder Methode benötigen Sie Ihre neuen Dateien erst, bevor Sie Ihre benutzerdefinierten Steuerelemente hinzufügen. Dann wird sich PHP nicht über die Neudefinition von classn beschweren.

Hinweis: Dies funktioniert nicht out of the box, aber zeigt den Trick.

 add_action('customize_register', array('myAddControl', 'customize_register') ); class myAddControl{ public function customize_register() { global $wp_customize; //This will do the trick require_once(dirname(__FILE__).'/class-gctfw-theme-control.php'); $wp_customize->add_section( 'gctfw_switch_theme' , array( 'title' => 'Switch theme', 'priority' => 25, ) ); $wp_customize->add_setting( 'gctfw_select_theme' , array( 'default' => $wp_customize->theme()->get('Name'), 'transport' => 'refresh', 'capabilities' => 'manage_options' ) ); $myControl = new gctfw_Theme_Control( $wp_customize, 'gctfw_select_theme', array( 'label' => __( 'Select theme', 'mytheme' ), 'section' => 'gctfw_switch_theme', 'settings' => 'gctfw_select_theme', ) ) ; $wp_customize->add_control( $myControl ); } }//class 

Du benutzt deine class nie. Übergeben Sie eine neue Instanz Ihrer class an die Methode add_control:

 $control_args = array( // your args here ); $my_control = new WP_Customize_Palette_Control( $wp_customize, 'themename_color_scheme', $control_args); $wp_customize->add_control($my_control); 

Ich glaube auch nicht, dass WP weiß, dass der Optionsname für Ihre Einstellung Teil eines Arrays ist. Vielleicht ist es besser, themename_theme_options_color_scheme anstatt themename_theme_options[color_scheme] .

Die class, zu der die Erweiterung gehört, gehört zum Steuerelement zum Hochladen von Bildern. Wenn Sie eine Farbauswahl erstellen, sollten Sie wahrscheinlich die class WP_Customize_Control erweitern .

Nur der Vollständigkeit halber: Ein Beispiel zum Hinzufügen eines Nummernfelds zum Theme Customizer.

 class Customize_Number_Control extends WP_Customize_Control { public $type = 'number'; public function render_content() { ?>  < ?php } }