Come filtrare l'elenco delle categorie nella gestione

12 gen 2011, 21:40:04
Visualizzazioni: 238
Voti: 0

Sto utilizzando con successo la funzione qui sotto per limitare la lunghezza delle descrizioni delle categorie quando visualizzo la schermata di gestione delle categorie (grazie Rarst).

Supponiamo che io voglia rimuovere le sottocategorie della categoria "uncategorized" da questo elenco. Dovrei semplicemente inserire un controllo nel ciclo for qui sotto per saltare quegli elementi figli?

AGGIORNAMENTO: Con il suggerimento di Rarst sull'uso di unset(), ho modificato il codice qui sotto con i pezzi corretti per rimuovere specifiche categorie dall'elenco di gestione...

//Pulisce i riepiloghi delle descrizioni nella tabella di gestione delle categorie
add_action( 'admin_head-edit-tags.php', 'admin_edit_tags' );
function admin_edit_tags() 
{
  add_filter( 'get_terms', 'admin_trim_category_description', 10, 2 );
}
function admin_trim_category_description( $terms, $taxonomies ) 
{
if( 'category' != $taxonomies[0] )return $terms;
foreach( $terms as $key=>$term )
{
$terms[$key]->description = strip_tags(substr( $term->description, 0, 75 ))."...";
//nuove modifiche qui
if($terms[$key]->term_id == 1){unset($terms[$key]);}
}
return $terms;
}
0
Tutte le risposte alla domanda 1
3

Sì, $terms contiene tutti i termini recuperati dal database per la visualizzazione, quindi qualsiasi modifica apportata si propagherà verso l'interfaccia.

Un aspetto di cui non sono sicuro è se questo influenzerà l'impaginazione dei risultati in questo caso.

12 gen 2011 21:52:42
Commenti

grazie ancora. Rileggendo la mia domanda mi rendo conto che potrebbe non essere chiaro che sto chiedendo di rimuovere l'intera categoria dal loop, non solo di saltare il trimming della descrizione. Ha senso? Qualche indizio su come potrei escludere una categoria specifica, per id, dall'essere scritta nella griglia dell'elenco?

Scott B Scott B
12 gen 2011 22:21:47

@Scott B sì, ho capito la tua domanda. Come ho detto $terms contiene tutte le categorie recuperate, quindi in quel loop puoi controllare $term per una corrispondenza con la categoria indesiderata e fare unset($terms[$key]); in caso di corrispondenza. Penso cautamente che dovrebbe funzionare. Vuoi che ti scriva il codice?

Rarst Rarst
12 gen 2011 22:41:08

Ora capisco perché eri preoccupato per l'impaginazione. Dovrò in qualche modo agganciarmi alla routine di impaginazione in modo che non includa le categorie che sto rimuovendo dal conteggio delle pagine. Altrimenti, come penso tu stessi suggerendo, il conteggio dell'impaginazione sarà sicuramente sballato.

Scott B Scott B
14 gen 2011 04:56:54