Сколько у вас постов на блоге? 100 или может быть 10000? Согласитесь, что при огромном количестве записей бывает полезно отобразить только содержимое какой-нибудь конкретной категории в админке. Правда сам я, если вдруг что, пользуюсь поиском, но тем не менее 🙂
Для этого есть фильтр по рубрикам, который находится на странице с записями:
Окей, вроде всё норм, но однажды у меня один клиент попросил добавить фильтр по таксономиям. Вот типо того:
Знаете, я недавно видел статью (не стану называть автора), в которой проводился обзор: что лучше — Joomla или WordPress, там говорилось, что:
Возможности в WordPress не ограничены, по крайней мере я с границами пока что не столкнулся и эта статья тому подтверждение. Это было небольшое отступление, а теперь за дело.
function true_taxonomy_filter() { global $typenow; // тип поста if( $typenow == 'post' ){ // для каких типов постов отображать $taxes = array('platform', 'game'); // таксономии через запятую foreach ($taxes as $tax) { $current_tax = isset( $_GET[$tax] ) ? $_GET[$tax] : ''; $tax_obj = get_taxonomy($tax); $tax_name = mb_strtolower($tax_obj->labels->name); // функция mb_strtolower переводит в нижний регистр // она может не работать на некоторых хостингах, если что, убирайте её отсюда $terms = get_terms($tax); if(count($terms) > 0) { echo "<select name='$tax' id='$tax' class='postform'>"; echo "<option value=''>Все $tax_name</option>"; foreach ($terms as $term) { echo '<option value='. $term->slug, $current_tax == $term->slug ? ' selected="selected"' : '','>' . $term->name .' (' . $term->count .')</option>'; } echo "</select>"; } } } } add_action( 'restrict_manage_posts', 'true_taxonomy_filter' );
Ну как бы и добавить больше нечего, исчерпывающий код 🙂 вставляем в файл functions.php вашей темы и радуемся.
P.S. Если хотите удалить при этом стандартный фильтр по рубрикам, используйте вот этот код:
add_filter( 'wp_dropdown_cats', '__return_false' );
После удаления фильтра по рубрикам может показаться логичным ещё и удаление колонки с рубриками, но эта тема затронута в отдельном посте.