Как можно улучшить эту простую функцию?
В первой функции ниже, внутри foreach, я вызываю вторую функцию для проверки совпадения ID категорий, которые нужно удалить из списка категорий.
Однако способ, которым я это делаю во второй функции, кажется мне довольно примитивным. Как можно улучшить эту проверку?
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') OR $cat_id == get_cat_ID('hidden') OR $cat_id == get_cat_ID('category2') OR $cat_id == get_cat_ID('category3'))
{
return true;
}
else
{
return false;
}
}
РЕДАКТИРОВАНИЕ: Вышеуказанные функции вызываются следующим образом...
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;
$whatever_categories = array('category1', 'hidden', 'category2', 'category3');
foreach( $terms as $key => $term)
if(!in_array($terms[$key]->name, $whatever_categories)) $terms[$key]->description = strip_tags(substr( $term->description, 0, 75 ))."...";
else unset($terms[$key]);
return $terms;
}

Единственное, что бросается в глаза как явно неэффективное — это вызов get_cat_ID
для каждой категории каждого термина. Каждый такой вызов означает запрос к базе данных.
Более эффективным решением будет вызов этих функций до цикла foreach
и помещение результатов в массив, который затем передается как параметр в функцию.

Возможно, стоит попробовать добавить проверяемые термины в массив, а затем просто проверять, находится ли $cat_id в этом массиве. Кажется, есть похожие функции для этого, но я не могу сейчас вспомнить их названия. Это позволит избавиться от множества условий OR.
