Suporte » Desenvolvendo com WordPress » Definir categorias a sem exibidas no widgets "posts recentes" via functions

  • Estou tentando achar um jeito de no widgets “posts recents” exibir somente os posts de uma ou varias categorias que eu queira. porem isso feito através do function.php pois nao quero mexer no código original do widget…

    Existe maneira de fazer isso?

Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • Moderador Leo Baiano

    (@leobaiano)

    Até onde sei você não tem como alterar o widget padrão, sem mexer no core, porque ele gera a lista de posts criando uma nova instancia da WP_Query(); e não temos como interferir nos argumentos dessa nova instancia sem mexer diretamente nela. Em outras palavras, este widget não prevê a possibilidade de alterar algo além das opções que ele fornece (quantidade de posts, titulo…).

    Minha sugestão é que utilize unregister_widget('WP_Widget_Recent_Posts'); para desregistrar o widget padrão e crie um novo widget para o recente posts passando as características que deseja. Pode até copiar o código do widget nativo e fazer as alterações.

    Criador do tópico ddzadravec

    (@ddzadravec)

    só preciso definir que ela mostre de 1 categoria em especifico..

    Moderador Leo Baiano

    (@leobaiano)

    A resposta continua sendo a mesma, ficou sem entender alguma parte? Se sim me diz qual que eu tento ajudar.

    Moderador Felipe Elia

    (@felipeelia)

    Passei por um problema semelhante recentemente (precisava alterar o HTML gerado por esse widget) e, fazendo quase exatamente o que o @leobaiano disse, consegui resolver de forma satisfatória: a única diferença é que na verdade não copiei o Widget original, acabei só estendendo a classe mesmo. A boa notícia é que o @ddzadravec deu sorte: este widget aplica um filtro (widget_posts_args) no array passado como argumento para WP_Query. No link tem um exemplo mudando o parâmetro orderby, então para fixar uma categoria só seria preciso adicionar esse código no functions.php do tema:

    add_filter('widget_posts_args', 'filter_recent_posts_widget_parameters'); 
    function filter_recent_posts_widget_parameters($params) {
       $params['category_name'] = 'staff'; // Troque 'staff' pelo slug da sua categoria
       return $params;
    }

    Não testei o código, mas o caminho é esse aí 🙂

    Moderador Leo Baiano

    (@leobaiano)

    Opa, verdade @felipeelia Elia, não vi que o filtro era aplicado, boa!

    • Esta resposta foi modificada 7 anos, 7 meses atrás por Leo Baiano.
Visualizando 5 respostas - 1 até 5 (de um total de 5)
  • O tópico ‘Definir categorias a sem exibidas no widgets "posts recentes" via functions’ está fechado para novas respostas.