Как отфильтровать список категорий в админке

12 янв. 2011 г., 21:40:04
Просмотры: 238
Голосов: 0

Я успешно использую приведенную ниже функцию для обрезки длины описаний категорий при просмотре экрана управления категориями (спасибо Rarst).

Допустим, я хочу удалить дочерние элементы категории "Без рубрики" из этого списка. Достаточно ли просто добавить проверку в цикл ниже, чтобы пропускать эти дочерние элементы?

ОБНОВЛЕНИЕ: С подсказкой Rarst об использовании unset(), я изменил код ниже, добавив правильные части для удаления определенных категорий из списка управления категориями...

// Очистка описаний категорий в таблице управления категориями
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 ))."...";
// новые изменения здесь
if($terms[$key]->term_id == 1){unset($terms[$key]);}
}
return $terms;
}
0
Все ответы на вопрос 1
3

Да, $terms содержит все термины, полученные из базы данных для отображения, поэтому любые изменения, которые вы внесёте, будут распространяться вверх до интерфейса.

Один момент, в котором я не уверен - повлияет ли это на пагинацию результатов в данном случае.

12 янв. 2011 г. 21:52:42
Комментарии

еще раз спасибо. Перечитав свой вопрос, я понимаю, что, возможно, было не совсем ясно, что я прошу удалить всю категорию из цикла, а не просто пропустить обрезку описания. Теперь понятнее? Есть ли идеи, как исключить конкретную категорию по id из вывода в сетке списка?

Scott B Scott B
12 янв. 2011 г. 22:21:47

@Scott B да, я понял ваш вопрос. Как я уже говорил, $terms содержит все полученные категории, поэтому в этом цикле вы проверяете $term на совпадение с нежелательной категорией и при совпадении делаете unset($terms[$key]);. Осторожно предполагаю, что это должно сработать. Хотите, чтобы я написал код за вас?

Rarst Rarst
12 янв. 2011 г. 22:41:08

Теперь я понимаю, почему вас беспокоила пагинация. Мне нужно как-то подключиться к процедуре пагинации, чтобы она не включала категории, которые я удаляю, в подсчет страниц. Иначе, как вы намекали, счетчик пагинации определенно будет неверным.

Scott B Scott B
14 янв. 2011 г. 04:56:54