• нашел вот такой полезный код (в админке добавляет сортирвку по авторам, даже не сортировку, а выбор). все настолько просто, что ппц 🙂 при использовании добавляет везде в штатные фильтры (1-2 обычно) выпадающий список авторов сайта и при выборе отсеивает записи по нему.

    // Sort adm posts
    
    function gu_filtr_po_avtoram() {
    	$parameters = array(
    		'name' => 'author', // атрибут name для селекта
    		'show_option_all' => 'Все авторы' // лейбл для отображения постов всех авторов
    	);
    	if ( isset($_GET['user']) )
    		$parameters['selected'] = $_GET['user']; // выбранный пользователь из списка
    		wp_dropdown_users( $parameters ); // выводим готовый список
    	}
    add_action('restrict_manage_posts', 'gu_filtr_po_avtoram');

    вопрос.

    можно ли подобным образом добавить выпадающие списки в админке для других типов полей (таксономий)? в частности для своих? или хотябы в какую сторону копать? свои добавлены, уже могу сортировать по ним, а вот так как выше — с отбором «только по такому» — не умею.
    впечатлило простотой.

Просмотр 10 ответов — с 1 по 10 (всего 10)
  • кста, я не нашел ни одного плагина, кто бы такое делал — может хотябы названием плагинов пособите?

    видимо так

    function gu_filtr_po_avtoram() {
    	$parameters = array(
    		'taxonomy'           => 'platform',
                     'name'               => 'platform',
                     'value_field'        => 'slug',
    
    	);
    	if ( isset($_GET['platform']) )
    		$parameters['selected'] = $_GET['platform']; // выбранный пользователь из списка
    		wp_dropdown_categories( $parameters ); // выводим готовый список
    	}
    add_action('restrict_manage_posts', 'gu_filtr_po_avtoram');

    выглядит приятно.
    пока не могу проверить, отпишу.
    спасибо комрад.

    решено, спасиб за подсказку

    что то не так. окошко с сортировкой появилось, есть выбор, есть сохранение после нажатия кнопы «фильтр», но самой сортировки (отсеивания по критерию выбора) нет.

    еще раз, более подробно но с кодом

    1. создаю свой тип записей

    // Add main post type
    
    Add_Action( 'init', 'gu_reg_main', $Gu_Wp_Order );
    	Function gu_reg_main() {
    	$labels = Array(
    		'name' => 'Общее',
    		'singular_name' => $name,
    		'add_new' => Gu_Wp_Add_Rec,
    		'add_new_item' => Gu_Wp_Add_Rec,
    		'edit_item' => Gu_Wp_Add_Edt,
    		'new_item' => Gu_Wp_Add_New,
    		'all_items' => Gu_Wp_Add_All,
    		'view_item' => Gu_Wp_View,
    		'search_items' => Gu_Wp_Search,
    		'not_found' =>  Gu_Wp_Not_Found,
    		'not_found_in_trash' => Gu_Wp_Not_Found
    	);
    	$args = Array(
    		'labels' => $labels,
    		'description' => $name,
    		'public' => true,
    		'publicly_queryable' => true,
    		'exclude_from_search' => false,
    		'show_in_nav_menus' => true,
    		'show_ui' => true,
    		'show_in_menu' => true,
    		'show_in_admin_bar' => true,
    		'menu_icon' => 'dashicons-editor-contract',
    		'menu_position' => 4,
    		'delete_with_user' => false,
    		'hierarchical' => false,
    		'rewrite' => Array('slug' => 'gu_main', 'feeds' => false, 'pages' => true),
    		'has_archive' => true,
    		'query_var' => true,
    		'can_export' => true,
    		'supports' => Array('title','editor','excerpt','author','thumbnail','comments','custom-fields','revisions','page-attributes','post-formats'),
    		'taxonomies' => Array()
    	);
    	Register_Post_Type('Gu_Main_Post',$args); }

    2. Добавляю для нового типа записи таксономию типа Метки (‘hierarchical’ => false). Определяет, для какого типа записи запись
    p.s. она в принципе не нужна, но сделал как тест и дублирование
    p.s.s. значения типа Gu_Wp_Add_Rec даны сверху как константы, если будете тестить — просто в кавычки одинарные

    Add_Action('init', 'gu_reg_tag_mp', $Gu_Wp_Order );
    	Function gu_reg_tag_mp() {
    	$labels = Array(
    		'name'              		=> 'Для',
    		'singular_name'     		=> $name,
    		'popular_items'     		=> Gu_Wp_Popular,
    		'search_items'      		=> Gu_Wp_Search,
    		'not_found' 			=> Gu_Wp_Not_Found,
    		'all_items'         		=> Gu_Wp_Add_All,
    		'view_item'         		=> Gu_Wp_View,
    		'separate_items_with_commas' 	=> Gu_Wp_Separate,
    		'add_or_remove_items'           => Gu_Wp_AddRemove,
    		'choose_from_most_used'         => Gu_Wp_SelectMost,
    		'parent_item'       		=> Gu_Wp_Parent,
    		'parent_item_colon' 		=> Gu_Wp_Parent . ':',
    		'edit_item'         		=> Gu_Wp_Add_Edt,
    		'update_item'       		=> Gu_Wp_Update,
    		'add_new_item'      		=> Gu_Wp_Add_Rec,
    		'new_item_name'     		=> Gu_Wp_Add_Rec	);
    	$args = Array(
    		'labels'                => $labels,
    		'public'                => true,
    		'show_in_nav_menus'     => true,
    		'show_ui'               => true,
    		'show_tagcloud'         => true,
    		'hierarchical'          => false,
    		'update_count_callback' => '',
    		'rewrite'               => true,
    		'capabilities'          => Array(),
    		'sort'                  => true,
    		'meta_box_cb'           => null,
    		'show_admin_column'     => true,
    		'_builtin'              => false,
    		'show_in_quick_edit'    => true 	);
    	Register_Taxonomy('Gu_MP_Tag', Array('page','mediapage','attachment','gu_main_post'), $args ); }

    3. Добавляю окошко сортировки (видно в типах: ‘page’,’mediapage’,’attachment’,’gu_main_post’)

    function gu_filtr_2() {
    	$parameters = array(
    		'taxonomy'        => 'Gu_MP_Tag',
    		'name'            => 'Gu_MP_Tag',
    //		'show_option_all' => 'Для всех',
    //		'show_last_update' => true,
    		'show_option_none' => 'Для всех',
    //		'hide_empty'      => false,
    //		'hierarchical'    => true,
    //		'order'           => 'ASC',
    //		'orderby'         => 'name',
    		'show_count'      => true,
    		'value_field'     => 'term_id'
    
    	);
    	if ( isset($_GET['Gu_MP_Tag']) ) $parameters['selected'] = $_GET['Gu_MP_Tag'];
    		wp_dropdown_categories( $parameters );
    	}
    add_action('restrict_manage_posts', 'gu_filtr_2', $Gu_Wp_Order + 5);

    помогите еще раз плз.

    ща почти 2 часа лазил по инету, не смог побороть 🙁
    скрин
    http://s013.radikal.ru/i322/1603/b8/27fc40355d39.png

    ‘value_field’ => ‘term_id’
    slug наверное надо указать

    спасибо за ответ.

    пробовал. даже последовательно все, кот. есть в примере реализации по оф. ссылке (name, id, taxonomy и тд)
    и да, мне кажется ‘slug’ у таксоно аля Метки — нет.

    вот это спец указал

      Добавляю для нового типа записи таксономию типа Метки (‘hierarchical’ => false).

    как и нет особливого wp_dropdown_tag

    нашел и плагин и множество рассуждений на эту тему, веде пишут, что ваш вариант рабочий. но в примерах везде _существующие по умолчанию_ категории. а тут не категории, а метки, и типы записей свои.

    пробовал разные запросы, но рабочий вар. так и не получил. методом логического тыка — пришел к тому что выше. все есть, кроме сортировки.

    может перейти с тагов на категории? что я потеряю? только называние типа в БД? в чем разница тогда????

    кста, потому и спрашивал, что разницы пока не вижу особой.
    но теории пока придерживаюсь (делаю сайт себе\скорее тестирую возможности двига).

    может нужно как-то эскалировать проблему, т.к. заявленные функции не работаю правильно? а тут как раз обновление 4.Х подкатывает, может поправят?

    я даже скачал около 5 самых скачиваемых плагинов на эту тему на примере добавления фильтров, чтобы подсмотреть, как делают гуру. самый маленький «Media Library Categories».

    везде практически работа идет с Категориями, а не с Метками.

    застрял короче по полной.

    №;%$%####
    1. предупреждали — не использовать красоту в коде и названия типов\процедур\категорий маленькими делать…
    до недавнего времени прокатывало…
    еще раз все переделал, подозревая это.
    2. метки и типы таксономий такие — зло
    3. ну, практически заработало.
    4. qwert555 еще раз спасибо за первичную наводку

    вообщем там не только названия виноваты, а еще надо переделывать term_id в слуги (там в примере показано):

      taxonomy: business
      term: business-1 (i.e. the slug)
      Not these:
      taxonomy: business
      term: 27 (i.e. the term_id)

    короче все понятно очень расписано в основном ответе

    http://wordpress.stackexchange.com/questions/578/adding-a-taxonomy-filter-to-admin-list-for-a-custom-post-type/42726#42726

    но мне больше понравился (answered Mar 23 ’11 at 20:40 ), он позволяет вообще все привязать и меньше кода, ща с ним ковырясь, переделываю.

    тут еще инфа http://simple2kx.com/wordpress-create-custom-filter-on-post-listing-with-custom-taxonomy/
    и поиском по «wordpress restrict_manage_posts wp_dropdown_categories»

    решено пока не ставлю, вдруг еще что то всплывет. пошел чистить БД от «красивых названий» 🙁

Просмотр 10 ответов — с 1 по 10 (всего 10)

Тема «админка — сортировка записей в типах» закрыта для новых ответов.