Cum poate fi îmbunătățită această funcție simplistă?
25 ian. 2011, 06:45:58
Vizualizări: 148
Voturi: 0
În prima funcție de mai jos, în interiorul foreach-ului, apelez a doua funcție pentru a verifica existența ID-urilor de categorii pe care vreau să le elimin din listarea categoriilor.
Totuși, modul în care fac acest lucru în a doua funcție mi se pare destul de simplist. Cum aș putea îmbunătăți această căutare?
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 ))."...";
if(ce4_get_utility_cats($terms[$key]->term_id))
{
unset($terms[$key]);
}
}
return $terms;
}
function ce4_get_utility_cats($cat_id)
{
if($cat_id == get_cat_ID('category1') || $cat_id == get_cat_ID('hidden') || $cat_id == get_cat_ID('category2') || $cat_id == get_cat_ID('category3'))
{
return true;
}
else
{
return false;
}
}
EDIT: Funcțiile de mai sus sunt apelate în următorul mod...
add_action( 'admin_head-edit-tags.php', 'admin_edit_tags' );
function admin_edit_tags(){
add_filter( 'get_terms', 'admin_trim_category_description', 10, 2 );
}
Comentarii
Toate răspunsurile la întrebare
3
1
function admin_trim_category_description( $terms, $taxonomies ){
// Verificăm dacă taxonomia este 'category'
if( 'category' != $taxonomies[0] )return $terms;
// Lista de categorii care vor fi ascunse sau tratate special
$whatever_categories = array('category1', 'hidden', 'category2', 'category3');
// Parcurgem fiecare termen
foreach( $terms as $key => $term)
// Dacă categoria nu se află în lista specială, trunchiem descrierea
if(!in_array($terms[$key]->name, $whatever_categories)) $terms[$key]->description = strip_tags(substr( $term->description, 0, 75 ))."...";
// Altfel, eliminăm categoria din listă
else unset($terms[$key]);
return $terms;
}

onetrickpony
13.6K
25 ian. 2011 07:19:02
0
Singurul lucru pe care îl pot vedea și care este evident ineficient este faptul că apelezi get_cat_ID
pentru fiecare categorie și pentru fiecare termen. Aceasta reprezintă o interogare la baza de date pentru fiecare apel de funcție.
Ar fi mai eficient să apelezi aceste funcții înainte de foreach
și să le stochezi într-un array trimis ca parametru către funcție.

Cronco
523
25 ian. 2011 07:20:22
Întrebări similare
4
răspunsuri
2
răspunsuri
1
răspunsuri