Как добавить свои колонки на странице со всеми постами в админке WordPress


Поступила задача вывести информацию из кастомных мета-поле на страницу редактирования всех постов. Нам для этого понадобятся следующие хуки – manage_{post_type}_posts_columns и manage_posts_custom_column.

Разделим задачу на несколько этапов:

Обязательно не забываем, что код вставляется в functions.php или в другие, файлы, которые подключаются в functions.php или в файлах темы gkfubyf&

1 этап – создадим колонки

add_filter( 'manage_kuhni_posts_columns', 'rb_kuhni_price_columns' );

function rb_kuhni_price_columns( $column_array ) {

	$column_array['price'] 		= 'Цена - Базовая';
	$column_array['price_std'] 	= 'Цена - Стандартная';
	$column_array['price_pr'] 	= 'Цена - Премиум';

	return $column_array;
}

Краткое пояснение:
Сам хук manage_{post_type}_posts_columns, где post_type может быть как стандартный тип записи – post, page, так и ваш собственный зарегистрированный, например – kuhni.

Результат этого действия будет такой:

Отображение добавленных колонок в админке

Вроде то, что нужно. Если нужно стилизовать, то это отдельная история, сейчас не об этом.

2 этап – заполним колонки информацией

add_action( 'manage_posts_custom_column', 'rb_kuhni_price_columns_populate', 10, 2 );

function rb_kuhni_price_columns_populate( $columns, $post_id ) {

	switch( $columns ) :
		case 'price': {
			echo number_format( get_post_meta( $post_id, 'price', true ), 0, '.', ' ');
			break;
		}
		case 'price_std': {
			echo number_format( get_post_meta( $post_id, 'price_std', true ), 0, '.', ' ');
			break;
		}
		case 'price_pr': {
			echo number_format( get_post_meta( $post_id, 'price_pr', true ), 0, '.', ' ');
			break;
		}
	endswitch;

}

Тут я использовал дополнительно функцию number_format() для того, чтобы числа имели разделение тысяч пробелом.

В итоге получаем вот такой результат:

Отображение значение мета-полей в кастомных колонках

Ура! Результат достигнут. Успехов.

Как сделать сортировку по тем мета-полям в админке WordPress вы можете прочитать здесь.