Następnie po prostu chcesz skopiować istniejący widżet kategorii z wp-includes/widgets/class-wp-widget-categories.phpdo do my_widget.phpmotywu i zmienić nazwę klasy na taką samą, jak nazwa użyta w wywołaniu register_widget()powyżej.
Następnie dokonaj dowolnych zmian! Sugeruję również zmianę tytułu, aby można go było odróżnić od domyślnego widżetu kategorii.
a poniżej znajduje się przykładowy kod, w jaki sposób można przesłonić dane wyjściowe widżetu.
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');
A powodem, dla którego nie zaoferowałem tego jako opcji, jest to, że w pewnym momencie możesz chcieć oryginalnego zachowania, a dzięki swojemu rozwiązaniu po prostu tracisz możliwość jego uzyskania.
Nie musisz tworzyć kompletnego nowego widżetu, aby robić to, co musisz zrobić. Gdy czytam twoje pytanie, jesteś zainteresowany zmianą sposobu wyświetlania kategorii na interfejsie. Istnieją dwie funkcje, które wyświetlają kategorie na interfejsie
Wszystko zależy od tego, która opcja została wybrana w wewnętrznej bazie danych
Teraz każda z tych dwóch funkcji ma filtr specyficzny dla widżetu ( widget_categories_argsi widget_categories_dropdown_argsodpowiednio ), którego można użyć do zmiany argumentów, które należy przekazać do tych funkcji. Możesz użyć tego do zmiany zachowania listy / menu rozwijanego. Jednak może to nie wystarczyć do robienia tego, co chcesz.
Alternatywnie, każda funkcja ma swój własny filtr, aby całkowicie zmienić sposób wyświetlania tych danych wyjściowych przez te funkcje.
Możemy użyć widget_titlefiltru, aby kierować konkretnie tylko na widżet, a nie inne wystąpienia tych funkcji.
Krótko mówiąc, możesz spróbować wykonać następujące czynności: ( CAŁKOWICIE NIEBADANE )
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);
Odpowiedzi:
Aby rozwinąć odpowiedź Marka, w domyślnych widżetach WordPress nie ma wiele (ogólnie) dostępnych filtrów
widget_text
.Ale dodanie własnego niestandardowego widgetu jest łatwe - umieść to w
functions.php
:Następnie po prostu chcesz skopiować istniejący widżet kategorii z
wp-includes/widgets/class-wp-widget-categories.php
do domy_widget.php
motywu i zmienić nazwę klasy na taką samą, jak nazwa użyta w wywołaniuregister_widget()
powyżej.Następnie dokonaj dowolnych zmian! Sugeruję również zmianę tytułu, aby można go było odróżnić od domyślnego widżetu kategorii.
źródło
Możesz zastąpić domyślne widżety WordPress, rozszerzając je. Kod domyślnego widgetu kategorii można znaleźć pod następującym linkiem: https://developer.wordpress.org/reference/classes/wp_widget_categories/widget/
a poniżej znajduje się przykładowy kod, w jaki sposób można przesłonić dane wyjściowe widżetu.
źródło
Nie musisz tworzyć kompletnego nowego widżetu, aby robić to, co musisz zrobić. Gdy czytam twoje pytanie, jesteś zainteresowany zmianą sposobu wyświetlania kategorii na interfejsie. Istnieją dwie funkcje, które wyświetlają kategorie na interfejsie
wp_list_categories()
który wyświetla kategorie na liściewp_dropdown_categories()
która wyświetla kategorie na liście rozwijanejWszystko zależy od tego, która opcja została wybrana w wewnętrznej bazie danych
Teraz każda z tych dwóch funkcji ma filtr specyficzny dla widżetu (
widget_categories_args
iwidget_categories_dropdown_args
odpowiednio ), którego można użyć do zmiany argumentów, które należy przekazać do tych funkcji. Możesz użyć tego do zmiany zachowania listy / menu rozwijanego. Jednak może to nie wystarczyć do robienia tego, co chcesz.Alternatywnie, każda funkcja ma swój własny filtr, aby całkowicie zmienić sposób wyświetlania tych danych wyjściowych przez te funkcje.
Są odpowiednio
wp_list_categories
wp_dropdown_cats
Możemy użyć
widget_title
filtru, aby kierować konkretnie tylko na widżet, a nie inne wystąpienia tych funkcji.Krótko mówiąc, możesz spróbować wykonać następujące czynności: ( CAŁKOWICIE NIEBADANE )
źródło