Filtrare "uncategorized" da tutti gli elenchi di categorie con un filtro in functions.php?

10 gen 2011, 18:40:45
Visualizzazioni: 2.71K
Voti: 1

Vorrei aggiungere del codice al mio functions.php per intercettare tutte le chiamate a wp_list_categories() E the_category() in modo da escludere "uncategorized" e qualsiasi figlio di "uncategorized" (O cat_id 1). Vorrei anche limitare il numero di parole restituite nell'attributo "title" di ogni anchor della lista. Attualmente l'impostazione predefinita è $cat_args['use_desc_for_title'] = 1; ma sembra non sia possibile inserirlo nel filtro delle esclusioni qui sotto.

Sto usando il codice qui sotto che rimuove efficacemente le categorie indesiderate dagli elenchi che usano wp_list_categories, tuttavia, non le rimuove dagli elenchi derivati da the_category...

function my_list_terms_exclusions($exclusions,$args) {
  // Ottiene tutti i figli della categoria con ID 1 (uncategorized)
  $children = implode(',',get_term_children(1,'category'));
  // Se ci sono figli, li aggiunge alla stringa di esclusione
  $children = (empty($children) ? '' : ",$children");
  // Aggiunge le esclusioni alla query SQL esistente
  return $exclusions . " AND (t.term_id NOT IN (1{$children}))";
}
add_filter('list_terms_exclusions', 'my_list_terms_exclusions', 10, 2);?>
1
Commenti

Perché non eliminare semplicemente uncategorized? Imposta un'altra categoria come predefinita, poi potrai eliminare uncategorized. Molto meno complicato.

Rarst Rarst
11 gen 2011 15:30:26
Tutte le risposte alla domanda 1
1

Finalmente sono riuscito a risolvere questo problema... Anche se ho dovuto impostare il filtro direttamente sul metodo widget_categories_args, quindi servono due istruzioni di filtro per farlo funzionare.

function my_categories_filter($cat_args){
    $cat_args['title_li'] = '';
    $cat_args['exclude_tree'] = 1;
    $cat_args['exclude'] = 1;
    $cat_args['use_desc_for_title'] = 0;
    return $cat_args;
}

add_filter('widget_categories_args', 'my_categories_filter', 10, 2);
12 gen 2011 22:36:56
Commenti

@philip: dovresti aggiungere ciascuno alla lista di esclusione (è un array)

Scott B Scott B
12 mar 2011 22:15:36