Ich suche nach einer Möglichkeit, dem benutzerdefinierten Live-Vorschaufenster eine neue Art von Steuerelement hinzuzufügen . Ich habe gesehen, wie man dem Panel mit neue Abschnitte hinzufügt
add_action( 'customize_register'...
Die Steuerung, die ich implementieren möchte, ist eine andere Art der Farbauswahl. In einem früheren Beitrag haben wir uns überlegt, wie man Core-Klassen erweitert, um Widgets hinzuzufügen. Was mir hier jedoch 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 ist in der functions.php
Datei meines Themas.
Vielen Dank für jede Hilfe. rauben
Habe gerade den Code aktualisiert. Jetzt muss ich require_once
den Unterricht einbringen. Jetzt habe ich keine PHP-Fehler, aber mein neues Steuerelement-HTML wird nicht angezeigt.
<?php
require_once( ABSPATH . WPINC . '/class-wp-customize-setting.php' );
require_once( ABSPATH . WPINC . '/class-wp-customize-section.php' );
require_once( ABSPATH . WPINC . '/class-wp-customize-control.php' );
class WP_Customize_Palette_Control extends WP_Customize_Image_Control {
public $type = 'palette';
public $removed = '';
public $context;
public function enqueue() {
//wp_enqueue_script( 'wp-plupload' );
}
public function to_json() {
parent::to_json();
$this->json['removed'] = $this->removed;
if ( $this->context )
$this->json['context'] = $this->context;
}
public function render_content() {
?>
<label>
<span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span>
<div>
<a href="#" class="button-secondary upload"><?php _e( 'Upload' ); ?></a>
<a href="#" class="remove"><?php _e( 'Remove' ); ?></a>
</div>
</label>
<?php
}
}
//new WP_Customize_Palette_Control();
//add_action('customize_controls_init', 'WP_Customize_Palette_Control');
// add an option to the customize panel
function sci_customize_controls_init($wp_customize) {
$wp_customize->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' );
Antworten:
Beispiel und Klasse 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 Klasse verwenden. Sehen Sie sich diese Klasse auf Github an und überprüfen Sie, ob sie
functions.php
dies enthält.Start & init
Sie können Ihre benutzerdefinierten Einstellungen für den Theme-Customizer über den
customize_register
Hook registrieren :In-Theme-Nutzung:
Verwenden Sie es wie im folgenden Beispiel ↓:
Anpassungen
Sie können auch die Steuerung ändern:
Der Standardsteuertyp ist
text
. Es wird ein Textfeld-Steuerelement erstellt. Ein anderer Steuerungstyp istdropdown-pages
, der eine Dropdown-Liste der WordPress-Seiten erstellt.Aber das ist nicht alles. Es gibt tatsächlich mehrere mehr, aber weil sie so individuell sind, werden sie anders deklariert.
Dieser nutzt OOP:
Zusätzliche Bemerkungen:
WP_Customize_Upload_Control
- Dies gibt Ihnen eine Upload-Box für Dateien. Sie werden dies jedoch wahrscheinlich nicht direkt verwenden. Sie möchten es für andere Dinge erweitern. Zum Beispiel:WP_Customize_Image_Control
- Dies gibt Ihnen die Bildauswahl und die Uploader-Box. Es erweitert den Upload-Controller. Sie können es in Aktion auf dem benutzerdefinierten Hintergrundstück sehen, auf dem ein Benutzer eine neue Datei als Hintergrundbild hochladen kann.WP_Customize_Header_Image_Control
- Aufgrund der Größenänderung des Kopfstücks ist eine besondere Handhabung und Anzeige erforderlich, so dassWP_Customize_Header_Image_Control
sich die Größe des Kopfstücks verlängertWP_Customize_Image_Control
um diese Funktionalität hinzuzufügen. Sie können es in Aktion auf der benutzerdefinierten Kopfzeile sehen, wo ein Benutzer eine neue Datei als Kopfzeilenbild hochladen kann.Weitere Informationen zu "Theme Customizer" finden Sie im Ottos-Blog .
Update 11/06/2012
Live-Beispiel für Lesemöglichkeiten und weitere Beispiele finden Sie im offenen Repo für die Quelle und das Doku.
Update 15.01.2013
Wir haben ein Repo auf Github mit einer benutzerdefinierten Klasse erstellt , um es einfach und bereit zu verwenden. Vielleicht können Sie es nur nutzen oder mit Ihren Ideen und Lösungen vorankommen.
quelle
Ok, hier ist, wie das geht. Teilen Sie Ihre Kontrollklasse (n) in eine oder mehrere neue Dateien auf.
Sie haben eine Funktion oder Methode, die sich auf customize_register einstellt, richtig? In dieser Funktion oder Methode benötigen Sie einmalig Ihre neuen Dateien, bevor Sie Ihre benutzerdefinierten Steuerelemente hinzufügen. Dann beschwert sich PHP nicht über die Neudefinition von Klassen.
Hinweis: Dies funktioniert nicht sofort, zeigt aber den Trick.
quelle
Du benutzt deine Klasse nie. Versuchen Sie, eine neue Instanz Ihrer Klasse an die Methode add_control zu übergeben:
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
statt zu habenthemename_theme_options[color_scheme]
.Die Klasse, die Sie erweitern, gehört zum Steuerelement für das Hochladen von Bildern. Wenn Sie einen Farbwähler erstellen, sollten Sie wahrscheinlich die WP_Customize_Control- Klasse erweitern.
quelle
Der Vollständigkeit halber: Ein Beispiel zum Hinzufügen eines Zahlenfelds zum Theme Customizer.
quelle
number
alstype
Standardkontrolle übergeben, und verwendeninput_attrs
, um zu übergebenstep
, etc.Ich denke, Sie müssen Backslash vor dem WP_Customize hinzufügen. So wird es sein
, Da Backslash davon ausgegangen ist, dass das WP_Customize_Image_Control nicht aus demselben Namespace stammt
Lassen Sie mich wissen, ob es geholfen hat
quelle