Intereting Posts
Являются ли стили WordPress Core CSS действительно важными? Почему моя база данных импортирует текстовые данные виджета? Какие проблемы могут возникнуть, если я заменил add_filter и add_action на вызов функции Категория ребенка Woocommerce Постоянная ссылка Изменение структуры Как включить пользовательскую форму оплаты в WordPress? Создание нового сообщения, видимого на определенной странице Как включить вкладки языков qTranslate на странице пользовательского плагина Изменить тему, чтобы иметь фильтр портфеля Dropdown удалить старые сообщения link Почему мой WP_Query дважды выводит мои записи? Изменение Woocommerce languange на многоуровневой установке WordPress Plugin Dev: использование массива для WP-параметров Отзывчивые изображения. Создание нескольких изображений из загрузки пользовательского элемента Theme. Как отображать сообщения в гиперссылке с вложенными слизнями? Категории loop

Как можно улучшить эту грубую функцию?

В первой функции ниже внутри foreach я вызываю вторую функцию, чтобы проверить наличие соответствующих идентификаторов категорий, которые я хочу удалить из списка категорий.

Однако то, как я делаю это во 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 ))."..."; 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; } } 

EDIT: Вышеупомянутые функции вызываются следующим образом …

 add_action( 'admin_head-edit-tags.php', 'admin_edit_tags' ); function admin_edit_tags(){ add_filter( 'get_terms', 'admin_trim_category_description', 10, 2 ); } 

Solutions Collecting From Web of "Как можно улучшить эту грубую функцию?"

 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 для каждой категории для каждого термина. Это запрос db для каждого вызова функции.

Было бы более эффективно вызывать эти функции перед foreach и помещать их в массив, отправленный как параметр функции.

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