Cum să filtrezi categoria "Necategorizat" din toate listările de categorii cu un singur filtru în functions.php?

10 ian. 2011, 18:40:45
Vizualizări: 2.71K
Voturi: 1

Doresc să adaug cod în functions.php pentru a intercepta toate apelurile către wp_list_categories() ȘI the_category() astfel încât să excludă "necategorizat" și orice subcategorii ale acesteia (SAU cat_id 1). De asemenea, aș dori să limitez numărul de cuvinte returnate în atributul "title" al fiecărui anchor din listă. În mod implicit, setez $cat_args['use_desc_for_title'] = 1; dar se pare că nu este posibil să inserez acest lucru în filtrul de excludere de mai jos.

Folosesc codul de mai jos care elimină eficient categoriile nedorite din listele care utilizează wp_list_categories, dar nu le elimin din listele derivate din the_category...

function my_list_terms_exclusions($exclusions,$args) {
  // Obține toate subcategoriile categoriei "Necategorizat" (ID 1)
  $children = implode(',',get_term_children(1,'category'));
  $children = (empty($children) ? '' : ",$children");
  // Adaugă condiția de excludere pentru categoria principală și subcategorii
  return $exclusions . " AND (t.term_id NOT IN (1{$children}))";
}
// Aplică filtrul pentru excluderea termenilor
add_filter('list_terms_exclusions', 'my_list_terms_exclusions', 10, 2);?>
1
Comentarii

De ce să nu scapi pur și simplu de uncategorized? Alege o altă categorie ca implicită, apoi poți șterge uncategorized. Mult mai puțină bătaie de cap.

Rarst Rarst
11 ian. 2011 15:30:26
Toate răspunsurile la întrebare 1
1

Am reușit în sfârșit să rezolv această problemă... Deși a trebuit să setez filtrul direct pe metoda widget_categories_args, deci sunt necesare două declarații de filtru pentru a realiza acest lucru.

function my_categories_filter($cat_args){
    $cat_args['title_li'] = ''; // Elimină titlul implicit al listei de categorii
    $cat_args['exclude_tree'] = 1; // Exclude categoria cu ID-ul 1 și toate subcategoriile sale
    $cat_args['exclude'] = 1; // Exclude categoria cu ID-ul 1
    $cat_args['use_desc_for_title'] = 0; // Dezactivează utilizarea descrierii ca titlu
    return $cat_args;
}

// Adaugă filtrul pentru argumentele widget-ului de categorii
add_filter('widget_categories_args', 'my_categories_filter', 10, 2);
12 ian. 2011 22:36:56
Comentarii

@philip: le vei adăuga pe fiecare în lista de excludere (este un array)

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