Начав настраивать WordPress под себя столкнулся с несколькими вопросами, один из них был такой: «Каким образом можно упорядочить рубрики (категории) в WordPress?«. Покопавшись в интернете нашел несколько решений данного вопроса.
Решение 1. Плагин MY Category Order.
Если вы не разбираетесь в php и плохо знаете саму структуру WordPress, то оптимальным для вас будет установка плагина. Наиболее популярным является
Решение 2. Wp_list_categories для WordPress.
Установив данный плагин у себя я с интересом увидел что он… не работает (скорее всего просто моя тема ему не подошла). Выяснять истинную причину и копаться в коде плагина особого желания не было, поэтому я пошел другим путем, а именно изменением PHP кода самого движка WordPress. И так.
За вывод списка рубрик в WordPress отвечает функция wp_list_categories, если вы хотите редактировать свою тему то необходимо править файл sidebar.php в папке с темой, если сам движок, то функцию ищем файл wp-includes/default-widgets.php.
Аргументы функции wp_list_categories:
- orderby — устанавливает сортировка по категориям, может быть равна id (сортирует по id рубрки), name (по имени), slug (по ярлыку), count (по количеству записей);
- order — устанавливает порядок сортировки, значения — ASC (прямой порядок), DESC (обратный порядок);
- title_li — задает заголовок для списка рубрик;
- number — ограничивает количество выводимых рубрик;
- show_count – выводит количество статей в рубрике;
- show_last_updated – выводит дату последнего обновления;
- hide_empty – скрывать пустые рубрики;
- hierarchical – влияет на то будит ли список иерархическим или нет — True (иерархический), False (не иерархический);
- use_desc_for_title — выводит описание рубрики в качестве ее заголовка;
- include – выводит в список только указанные рубрики (указывается id рубрик через запятую);
- exclude – обратный параметр, исключает из списка, указанные рубрики;
- exclude_tree – исключения указанную ветку рубрики;
- child_of – вывод только под рубрики для заданной родительской рубрики;
- depth – указывает количество уровней для под рубрик для вывода;
- style – задает стиль оформления, значения — list (список), none (переход строки);
- show_option_all – отображает ссылка на все рубрики, если в качестве стиля отображения выбран список;
- feed – отображение ссылку на wordpress rss фид для категорий;
- feed_type – тип фида;
- feed_image – картинка для значка rss;
- echo – выводит рубрики, по умолчанию равен True.
Аргументы в функции разделяются знаком & (and).
Несколько примеров использование функции wp_list_categories для WordPress:
wp_list_categories('orderby=id&show_count=1&title_li=');
Функция выведет список рубрик отсортированных по id, с количеством постов для каждой рубрики и с пустым заголовком списка.wp_list_categories('orderby=count&order=desc&exclude=1,2,3');
Функция выведет список рубрик отсортированных по количеству постов в рубрики, начиная с самого меньшего количества, в список не попадут рубрики id которых равны 1,2 и 3.
В сети так же встречались рекомендации по исправлению php кода в файле wp-include/category.php, но они распространяются только если происходит кривая сортировка из-за использования UTF-8.
В моем случае в файле sidebar.php я просто не обнаружил эту функцию и пришлось править сам движок, результат вы видите на сайте.
Да, а у меня тема выводит рубрики в верхнем гориз. меню и как быть, как отсортировать или же исключить
Принцип вывода и функции должны быть те же что и в боковой колонке. Только найти эту функцию попробуйте в файле header.php вашей темы.
эта строка выводит категории с описанием в качестве title, а как сделать без описания, т.е. с пустым title для ссылки, чтобы при наведении мышки на ссылку не выводилось описание категории?
правим файл classes.php в директории wp-include
Ищем функцию start_el в ней есть условие
if ( $use_desc_for_title == 0 || empty($category->description) )
$link .= 'title="' . sprintf(__( 'View all posts filed under %s' ), $cat_name) . '"';
else
$link .= 'title="' . esc_attr( strip_tags( apply_filters( 'category_description', $category->description, $category ) ) ) . '"';
В зависимости от того как у вас до этого был настрое вызов функции Wp_list_categories редактируем либо первую, либо вторую строчку с $link .=
прописываем $link .= ‘ ‘ ;
Если поможет, отпишись, плиз.
Спасибо! 3 дня искал решение!!.не хотел лезть в движок, но… потом не мог найти эту функцию. другие авторы указали другие файлы. и наконец поправил в движке. чуток подкрутил, что бы красиво и… вуаля!
Не за что. Единственное что стоит учитывать: при обновлении до более новой версии движка изменения могут быть утеряны
«В сети так же встречались рекомендации по исправлению php кода в файле wp-include/category.php, но они распространяются только если происходит кривая сортировка из-за использования UTF-8.» — вот я столкнулся с такой проблемой и не могу найти решение… что именно надо править в файле.. так как идет кривая сортировка и рубрик, и статей…
Респект за инфу! Долго искала, как изменить порядок рубрик. Все пишут о плагине My Category Orders, а он — собака такая — не работает на моей теме. Пришлось помучаться, чтобы найти эту статью. Спасибо, Вы меня выручили!
Рад что кому-то смог помочь. Процветания вашему блогу.
Огромный респект за хорошую статью. А то все только плагин тычут, а в моем случае он бесполезен. Тоже история с горизонтальным верхним меню.