Home News

Сортировка постов по произвольному полю в админке WP

18.04.2018

видео Сортировка постов по произвольному полю в админке WP

WordPress. Картинка рубрики

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

В качестве произвольного поля я взял количество просмотров записи, ну, и если вы кликнете по заголовку таблицы «Просмотры», то посты соответственно будут сортироваться по возрастанию или убыванию просмотров (если кликнуть второй раз).



Другие фильтры записей при этом будут работать как и полагается (в моём случае это фильтр по месяцам, рубрикам + постраничная навигация, когда записей станет много).

В этой статье я хочу разобрать всё ну очень подробно, поэтому если что-то вам кажется пустяковым — просто переходите к следующей главе.


Carbon Fields 1.6 - обзор плагина для создания произвольных полей

Создание произвольного поля

Тут есть два варианта.

Если вы создаёте что-то с нуля, то вы можете добавить просмотры при помощи стандартного метабокса «Произвольные поля». Либо для удобства вы можете добавить свой собственный метабокс, в котором можно указать просмотры, про метабоксы подробно тут .

Добавление колонки

Про колонки уже подробно было рассмотрено здесь , поэтому сейчас вкратце. Вставляете этот код в ваш functions.php, после чего колонка должна будет появиться (но пока что без возможности сортировки).


посты местами, поменять статьи местами, поменять записи местами, wordpress плагин вывода записей

add_filter ( 'manage_edit-post_columns' , 'true_add_post_columns_2' , 10 , 1 ) ; // manage_edit-{тип поста}_columns, то есть вы можете добавлять колонку не только для записей add_action ( 'manage_posts_custom_column' , 'true_fill_post_columns_2' , 10 , 1 ) ;   /* добавление колонки */ function true_add_post_columns_2 ( $my_columns ) { $my_columns [ 'prosmort' ] = 'Просмотры' ; return $my_columns ; }   /* заполнение колонки */ function true_fill_post_columns_2 ( $column ) { global $post ; switch ( $column ) { case 'prosmort' : echo ( $x = get_post_meta ( $post -> ID , 'prosmort' , true ) ) ? $x : 0 ; // это простое условие, если произвольного поля не существует, то выводим 0 break ; } }

В результате у меня получилось:

rss