Escreva seu próprio widget que faça o que você deseja. Comece copiando o código do widget de categorias e faça as modificações.
Mark Kaplun
Obrigado, geralmente sigo este truque para fazer minhas modificações no widget. É o método mais fácil para mim.
Eh Jewel
Respostas:
13
Para expandir a resposta de Mark, não há muito (geralmente) disponível na forma de filtros nos widgets padrão do WordPress (exceto talvez widget_text).
Mas é fácil adicionar seu próprio widget personalizado - coloque isso em functions.php:
Então, você simplesmente deseja copiar o widget de categorias existente de wp-includes/widgets/class-wp-widget-categories.phppara my_widget.phpno seu tema e alterar o nome da classe para o mesmo nome que o usado na chamada register_widget()acima.
Em seguida, faça as alterações que desejar! Sugiro alterar o título também para que você possa distingui-lo do widget Categorias padrão.
e abaixo está um código de exemplo de como você pode substituir a saída do widget.
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');
E a razão pela qual eu não ofereci isso como opção é que você pode querer o comportamento original em algum momento e, com a sua solução, perde a capacidade de obtê-lo.
Você não precisa criar um novo widget completo para fazer o que precisa. Enquanto eu leio sua pergunta, você está apenas interessado em alterar a forma como as categorias são exibidas no front end. Existem duas funções que exibem as categorias no front end
Tudo isso depende de qual opção foi selecionada no back-end
Agora, cada uma dessas duas funções possui um filtro específico do widget ( widget_categories_argse widget_categories_dropdown_argsrespectivamente ) que você pode usar para alterar os argumentos que devem ser passados para essas funções. Você pode usar isso para alterar o comportamento da lista / lista suspensa. No entanto, isso pode não ser suficiente para fazer o que você deseja.
Como alternativa, cada função tem seu próprio filtro para alterar completamente a maneira como essas funções devem exibir sua saída.
Podemos usar o widget_titlefiltro para segmentar especificamente apenas o widget e não outras instâncias dessas funções.
Em resumo, você pode tentar o seguinte: ( TOTALMENTE NÃO ESTADO )
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);
Respostas:
Para expandir a resposta de Mark, não há muito (geralmente) disponível na forma de filtros nos widgets padrão do WordPress (exceto talvez
widget_text
).Mas é fácil adicionar seu próprio widget personalizado - coloque isso em
functions.php
:Então, você simplesmente deseja copiar o widget de categorias existente de
wp-includes/widgets/class-wp-widget-categories.php
paramy_widget.php
no seu tema e alterar o nome da classe para o mesmo nome que o usado na chamadaregister_widget()
acima.Em seguida, faça as alterações que desejar! Sugiro alterar o título também para que você possa distingui-lo do widget Categorias padrão.
fonte
Você pode substituir os widgets padrão do WordPress estendendo-os. O código do widget Categorias padrão pode ser encontrado no seguinte link: https://developer.wordpress.org/reference/classes/wp_widget_categories/widget/
e abaixo está um código de exemplo de como você pode substituir a saída do widget.
fonte
Você não precisa criar um novo widget completo para fazer o que precisa. Enquanto eu leio sua pergunta, você está apenas interessado em alterar a forma como as categorias são exibidas no front end. Existem duas funções que exibem as categorias no front end
wp_list_categories()
que exibe as categorias em uma listawp_dropdown_categories()
que exibe categorias em uma lista suspensaTudo isso depende de qual opção foi selecionada no back-end
Agora, cada uma dessas duas funções possui um filtro específico do widget (
widget_categories_args
ewidget_categories_dropdown_args
respectivamente ) que você pode usar para alterar os argumentos que devem ser passados para essas funções. Você pode usar isso para alterar o comportamento da lista / lista suspensa. No entanto, isso pode não ser suficiente para fazer o que você deseja.Como alternativa, cada função tem seu próprio filtro para alterar completamente a maneira como essas funções devem exibir sua saída.
Eles são respectivamente
wp_list_categories
wp_dropdown_cats
Podemos usar o
widget_title
filtro para segmentar especificamente apenas o widget e não outras instâncias dessas funções.Em resumo, você pode tentar o seguinte: ( TOTALMENTE NÃO ESTADO )
fonte