/ Сайтостроение / Wordpress / Настраиваем панель редактирования записей

Настраиваем панель редактирования записей

02.10.2016

666

Для различных целей мы можем настраивать вид и функционал админ части сайта. Выводить дополнительные поля, таксономии, сортировать по этим данным, а также оформлять элементы управления.

Миниатюра в панели редактирования

Добавим код в functions.php. Последний блок — привязка к постам и страницам.

add_image_size( 'admin-list-thumb', 80, 80, false );

// add featured thumbnail to admin post columns
function wpcs_add_thumbnail_columns( $columns ) {
 $columns = array(
 'cb' => '<input type="checkbox" />',
 'featured_thumb' => 'Миниатюра',
 'title' => 'Title',
 'author' => 'Author',
 'categories' => 'Categories',
 'tags' => 'Tags',
 'comments' => '<span class="vers"><div title="Comments" class="comment-grey-bubble"></div></span>',
 'date' => 'Date'
 );
 return $columns;
}

function wpcs_add_thumbnail_columns_data( $column, $post_id ) {
 switch ( $column ) {
 case 'featured_thumb':
 echo '<a href="' . get_edit_post_link() . '">';
 echo the_post_thumbnail( 'admin-list-thumb' );
 echo '</a>';
 break;
 }
}

if ( function_exists( 'add_theme_support' ) ) {
 add_filter( 'manage_posts_columns' , 'wpcs_add_thumbnail_columns' );
 add_action( 'manage_posts_custom_column' , 'wpcs_add_thumbnail_columns_data', 10, 2 );
 add_filter( 'manage_pages_columns' , 'wpcs_add_thumbnail_columns' );
 add_action( 'manage_pages_custom_column' , 'wpcs_add_thumbnail_columns_data', 10, 2 );
}

В данном решении мы создали дополнительный размер миниатюры. Это необязательно, можно использовать стандартный или свой размер.

Если нужно добавить функцию к определенному типу записей, то нужно его прописать здесь:

add_filter( 'manage_slide_posts_columns' , 'wpcs_add_thumbnail_columns' );
add_action( 'manage_slide_posts_custom_column' , 'wpcs_add_thumbnail_columns_data', 10, 2 );

Добавляем цвета к статусам

// Цвета строк записей в зависимости от статуса
add_action( 'admin_footer', 'admin_footer_example' );
function admin_footer_example() {
 echo '<style type="text/css">
 .status-draft { background-color: #FCE3F2 !important; }
 .status-pending { background-color: #87C5D6 !important; }
 .status-future { background-color: #C6EBF5 !important; }
 .status-private { background-color: #F2D46F !important; }
 </style>';
}

Если не задать свойствам атрибут !important, то четные записи будут серыми, т.к. их будет перекрывать стандартный перемежающийся фон wordpress

Выводим колонку с ID

if (is_admin()) {
 // колонка "ID" для постов и страниц в админке
 add_filter('manage_posts_columns', 'posts_add_col', 5);
 add_action('manage_posts_custom_column', 'posts_show_id', 5, 2);
 add_filter('manage_pages_columns', 'posts_add_col', 5);
 add_action('manage_pages_custom_column', 'posts_show_id', 5, 2);
 add_action('admin_print_styles-edit.php', 'posts_id_style');
 function posts_add_col($defaults) {$defaults['wps_post_id'] = __('ID'); return $defaults;}
 function posts_show_id($column_name, $id) {if ($column_name === 'wps_post_id') echo $id;}
 function posts_id_style() {print '<style>#wps_post_id{width:4em}</style>';} 
}

Добавить колонку с пользовательским полем (acf)

price — slug пользовательского поля

// Создаем колонку Price
function add_acf_columns ( $columns ) {
	$columns['price'] = 'Price';
    return $columns;
 }
 add_filter ( 'manage_post_posts_columns', 'add_acf_columns' );

// Заполняем колонку данными из поля price
add_action('manage_posts_custom_column', 'shiba_render_post_columns', 10, 2);
 
function shiba_render_post_columns($column_name, $id) {
    switch ($column_name) {
    case 'price':
        $price_id = get_post_meta( $id, 'price', TRUE);
		echo $price_id;
    break;
    }
}

По добавлению мета полей (не acf) подробнее здесь

Сортировка по произвольной колонке

Добавим сортировку по пользовательской колонке price

add_filter( 'manage_edit-post_sortable_columns', 'my_website_manage_sortable_columns' );
function my_website_manage_sortable_columns( $sortable_columns ) {

   $sortable_columns['price'] = 'price';
   return $sortable_columns;
}


add_action( 'pre_get_posts', 'manage_wp_posts_be_qe_pre_get_posts', 1 );
function manage_wp_posts_be_qe_pre_get_posts( $query ) {

   if ( $query->is_main_query() && ( $orderby = $query->get( 'orderby' ) ) ) {

        switch( $orderby ) {

        case 'price':

            $query->set( 'meta_key', 'price' );
            $query->set( 'orderby', 'meta_value' );
				
        break;

        }
   }
}

Если смешанный тип данных текст и числа лучше использовать meta_value. Если только числа то meta_value_num

Добавляем фильтр по метке

За основу данного решения взял плагин Admin post tag filter (100). Он у меня не работал, пришлось подправить одну строку (выделено жирным).

function aptf_manage_posts_by_tag(){
	global $wp_taxonomies;
	if ( is_array( $wp_taxonomies ) )
	{
		$no_category_and_links = array('');
		foreach( $wp_taxonomies as $tax )
		{
			
				if($tax->name == 'post_tag'){ 
				$the_terms = get_terms($tax->name,'orderby=name&hide_empty=0' );
				$content  = '<select name="'.$tax->name.'" id="'.$tax->name.'" class="posttagfilter">';
				$content .= '<option value=""> All '.$tax->label.'</option>';
				
				foreach ($the_terms as $term){
					$selected_tag = '';
					
					$content .= '<option value="' . $term->slug . '"> '. $term->slug . '</option>';
				}
				$content .= '</select>';
				$content = str_replace('post_tag', 'tag', $content); 
				echo($content);
			}
		}
	}
}

add_action('restrict_manage_posts', 'aptf_manage_posts_by_tag');

Изменяя строку if($tax->name == ‘post_tag’) можно выводить фильтр по любой таксономии.

Массовое изменение категорий

Массово добавить записям категории возможно, а вот удалить нет. Если требуется отредактировать (в т.ч. какие-то удалить) массово категории у записей — нужно воспользоваться плагином Mass set Categories (300+).

Тэги:

Поделится информацией с друзьями

  • Похожие записи
  • Комментарии
  • Вложения
Наводим порядок в админке

Наводим порядок в админке

Некоторые принципы по созданию порядка в админке и удобству реализации функционала сайта. Для удобства редактирования кода устанавливаем плагин Advanced Code Editor. Он также немного преобразует панель Редактирование. Также плагин дает Читать далее »

Настраиваем панель редактирования таксономий

Настраиваем панель редактирования таксономий

Расширяем стандартную панель редактирования таксономий (точнее терминов): категорий, меток и пользовательских. Выводим колонку с ID if (is_admin()) { // колонка "ID" для таксономий (рубрик, меток и т.д.) в админке foreach Читать далее »

Заглушка для сайта

Заглушка для сайта

Во время разработки / тех.обслуживания / тестинга нужно вставить код в functions function rezim_obsluzivania() { if ( !current_user_can( 'administrator' ) ) { wp_die('Сайт находится в режиме обслуживания, производятся обновления. Зайдите Читать далее »

/

Добавить комментарий

Пока нет комментариев. Будь первым!

Настраиваем панель редактирования записей Настраиваем панель редактирования записей
Slider v.2
Рекомендации для васSlider v.2Opttour.ru
Спасибо! Наш менеджер свяжется с Вами в течении 5 минут.