Wie kann ich die Wordpress-Widget Standardausgabe ändern?
16
Ich will nicht das Standard-Widget mit nur CSS-Stil. Ich will das default ‚Kategorien‘ Widget Inhalt mit meiner eigenen HTML-Struktur angezeigt werden soll.
Schreiben Sie Ihr eigenes Widget, das macht, was Sie wollen. Starten Sie durch Kopieren des Codes der Kategorien Widget und tun Modifikationen.
Mark Kaplun
Danke, ich folge in der Regel diesen Trick meine Widget Änderungen zu tun. Das scheint mir die einfachere Methode zu sein.
Eh Jewel
Antworten:
13
So erweitert Antwort auf Mark, gibt es nicht viel ( in der Regel) in der Art und Weise von Filtern in den Standard - Wordpress - Widgets (außer vielleicht widget_text).
Aber deine eigenen individuell gestaltetes Hinzufügen Widget einfach - diese in deinem functions.php:
Dann mögen Sie einfach die bestehenden Kategorien von Widget zu kopieren , wp-includes/widgets/class-wp-widget-categories.phpum my_widget.phpin Ihrem Thema, und die Klassennamen wie im Aufruf verwendet , um den gleichen Namen ändern register_widget()oben.
Nehmen Sie dann die gewünschten Änderungen vor! Ich schlage vor, die Änderung den Titels zu, so dass Sie es von der Standard-Kategorien Widget unterscheiden können.
und unten ist ein Beispiel-Code, wie Sie die Ausgabe des Widgets überschreiben können.
ClassMy_Categories_Widgetextends WP_Widget_Categories {function widget( $args, $instance ){// your code here for overriding the output of the widget}}function my_categories_widget_register(){
unregister_widget('WP_Widget_Categories');
register_widget('My_Categories_Widget');}
add_action('widgets_init','my_categories_widget_register');
Und der Grund, warum ich das nicht als Option angeboten habe, ist, dass Sie vielleicht irgendwann das ursprüngliche Verhalten wollen und mit Ihrer Lösung die Fähigkeit verlieren, es zu bekommen.
Sie müssen kein komplett neues Widget erstellen, um das zu tun, was Sie tun müssen. Während ich Ihre Frage lese, sind Sie nur daran interessiert, die Anzeige der Kategorien im Frontend zu ändern. Es gibt zwei Funktionen, die die Kategorien am Frontend anzeigen
Dies alles hängt davon ab, welche Option wurde im Backend ausgewählt
Nun, jeder dieser beiden Funktionen hat einen Widget spezifischen Filter ( widget_categories_argsund widget_categories_dropdown_argsjeweils ) , die Sie die Argumente zu ändern , verwenden können , die auf diese Funktionen übergeben werden sollen. Damit können Sie das Verhalten der Liste / Drop - Down zu ändern. Dies kann jedoch nicht ausreichen , um zu tun , was Sie wollen.
Alternativ hat jede Funktion einen eigenen Filter vollständig die Art und Weise zu verändern, wie diese Funktionen ihre Ausgabe angezeigt werden sollen.
Wir können das verwenden widget_titleFilter , um speziell die Widget nur und nicht andere Instanzen dieser Funktionen zu zielen.
Kurz gesagt, können Sie Folgendes versuchen: ( TOTALLY UNTESTED )
add_filter('widget_title',function( $title, $instance, $id_base ){// Target the categories baseif('categories'=== $id_base )// Just make sure the base is correct, I'm not sure here
add_filter('wp_list_categories','wpse_229772_categories',11,2);//add_filter( 'wp_dropdown_cats', 'wpse_229772_categories', 11, 2 );return $title;},10,3);function wpse_229772_categories( $output, $args ){// Only run the filter once
remove_filter( current_filter(), __FUNCTION__ );// Get all the categories
$categories = get_categories( $args );
$output ='';// Just an example of custom html
$output .='<div class="some class">';foreach( $categories as $category ){// Just an example of custom html
$output .='<div class="'. echo $category->term_id .'">';// You can add any other info here, like a link to the category
$output .= $category->name;// etc ect, you get the drift
$output .='</div>';}
$output .='</div>';return $output;},11,2);
Antworten:
So erweitert Antwort auf Mark, gibt es nicht viel ( in der Regel) in der Art und Weise von Filtern in den Standard - Wordpress - Widgets (außer vielleicht
widget_text
).Aber deine eigenen individuell gestaltetes Hinzufügen Widget einfach - diese in deinem
functions.php
:Dann mögen Sie einfach die bestehenden Kategorien von Widget zu kopieren ,
wp-includes/widgets/class-wp-widget-categories.php
ummy_widget.php
in Ihrem Thema, und die Klassennamen wie im Aufruf verwendet , um den gleichen Namen ändernregister_widget()
oben.Nehmen Sie dann die gewünschten Änderungen vor! Ich schlage vor, die Änderung den Titels zu, so dass Sie es von der Standard-Kategorien Widget unterscheiden können.
quelle
Sie können die Standardwordpress - Widgets überschreiben , indem sie erstrecken. Den Code für das Standardwidget "Kategorien" finden Sie unter folgendem Link: https://developer.wordpress.org/reference/classes/wp_widget_categories/widget/
und unten ist ein Beispiel-Code, wie Sie die Ausgabe des Widgets überschreiben können.
quelle
Sie müssen kein komplett neues Widget erstellen, um das zu tun, was Sie tun müssen. Während ich Ihre Frage lese, sind Sie nur daran interessiert, die Anzeige der Kategorien im Frontend zu ändern. Es gibt zwei Funktionen, die die Kategorien am Frontend anzeigen
wp_list_categories()
das zeigt die Kategorien in einer Listewp_dropdown_categories()
die Displays Kategorien in einer Dropdown-ListeDies alles hängt davon ab, welche Option wurde im Backend ausgewählt
Nun, jeder dieser beiden Funktionen hat einen Widget spezifischen Filter (
widget_categories_args
undwidget_categories_dropdown_args
jeweils ) , die Sie die Argumente zu ändern , verwenden können , die auf diese Funktionen übergeben werden sollen. Damit können Sie das Verhalten der Liste / Drop - Down zu ändern. Dies kann jedoch nicht ausreichen , um zu tun , was Sie wollen.Alternativ hat jede Funktion einen eigenen Filter vollständig die Art und Weise zu verändern, wie diese Funktionen ihre Ausgabe angezeigt werden sollen.
Sie sind jeweils
wp_list_categories
wp_dropdown_cats
Wir können das verwenden
widget_title
Filter , um speziell die Widget nur und nicht andere Instanzen dieser Funktionen zu zielen.Kurz gesagt, können Sie Folgendes versuchen: ( TOTALLY UNTESTED )
quelle