Блоґ Як зробити

Працюємо із custom post type. Урок 1

Pinterest LinkedIn Tumblr

З виходом версії WP 3.0 з’явилася можливість створення власних типів постів. Якщо раніше стандартно їх було 3, це публікації блоґу(post), статична сторінка(page) і медіа-файл(attachment), розширення типів не було передбачено, то зараз доступне створення додаткових типів контенту. У першій частині серії статей я розгляну створення кастомного типу контенту.

Ми створемо новий тип контенту — фотогалерею із власними теґами.

Для створення галереї нам необхідно 2 плаґіни: Custom Post Type UI та Simple Custom Post Type Archives. перший плаґін необхідний для створення користувацького інтерфейсу додавання кастомних типів контенту та власної таксономії, а другий допоміжний, додає можливість використовувати «чисті URL», створює RSS-стрічки і додає CSS-класи для теґу body.

Активуємо два плаґіни та створюємо новий тип контенту і таксономію для нього.
На скріншотах показано орієнтовні налаштування.

Ми створили додатковий тип контенту, створили власну таксономію для цього типу контенту. Але коли зайти на сторінку редагування фотогалерей, то ми бачимо стандартний вигляд. Це не надто зручно.

Стандартний вигляд сторінки редагування галерей
Стандартний вигляд сторінки редагування галерей

Можна додати додаткові колонки. Ми додамо такі: мініатюра, кількість фото і список теґів.
Для цього нам потрібно відредагувати файл теми [php]functions.php[/php] , цей код потрібно додати в кінці файлу.

/**
* Власне сортування колонок на сторінці редагування контенту.
* «photogallery» — це назва контенту
*/
add_filter("manage_edit-photogallery_columns", "photogallery_edit_columns");
function photogallery_edit_columns($photogallery_columns){
$photogallery_columns = array(
"cb" => "<input type="checkbox" />",
"title" => _x('Photogallery Name', 'cehla'),
"images" => _x('Images', 'cehla'),
"thumbnail" => __('Thumbnail'),
"photogallery_tag" => __('Tags'),
"author" => __('Author'),
"date" => __('Date')
);
$photogallery_columns['comments'] = '
<div class="vers"><img src="' . esc_url( admin_url( 'images/comment-grey-bubble.png' ) ) . '" alt="Comments" /></div>
';
return $photogallery_columns;
}
/**
* Додаємо функціонал для нових колонок (виводимо мініатюру та кількість зображень)
*/
add_action('manage_posts_custom_column', 'manage_photogallery_columns', 10, 2);
function manage_photogallery_columns($column_name, $id) {
global $wpdb;
switch ($column_name) {
case "thumbnail":
// Отримуємо мініатюру
$width = (int) 50; // Ширина мініатюри
$height = (int) 50; // Висота мініатюри
$thumbnail_id = get_post_meta( $post_id, '_thumbnail_id', true );
$attachments = get_children( array('post_parent' => $post_id, 'post_type' => 'attachment', 'post_mime_type' => 'image') );
if ($thumbnail_id)
$thumb = wp_get_attachment_image( $thumbnail_id, array($width, $height), true );
elseif ($attachments) {
foreach ( $attachments as $attachment_id => $attachment ) {
$thumb = wp_get_attachment_image( $attachment_id, array($width, $height), true );
}
}
if ( isset($thumb) && $thumb ) {
echo $thumb;
} else {
echo __('None');
}
break;
case 'images':
// Отримуємо кількість зображень у галереї
$num_images = $wpdb->get_var($wpdb->prepare("SELECT COUNT(*) FROM $wpdb->posts WHERE post_parent = {$id};"));
echo $num_images;
break;
default:
break;
case "photogallery_tag":
// Отримуємо теґи фотогалереї
if ($photogallery_tag_list = get_the_term_list( $post->ID, 'photogallery_tag', '', ', ', '' ) ) {
echo $photogallery_tag_list;
} else {
echo __('No tags');
}
break;
} // end switch
}
/**/
Code language: PHP (php)

Завдяки цьому коду ми виведемо нові колонки із кількістю фото, мініатюрою та теґами власної таксономії.

Покращенний вигляд сторінки редагування
Покращенний вигляд сторінки редагування

У нас вже є створений адміністративний інтерсейс для додавання/редагування нового типу контенту із таксономією.

Вигляд новоствореної фотогелереї
Вигляд новоствореної фотогелереї

У наступному уроці я розповім як кастомізувати вигляд галерей.

Дмитро Кондрюк в веб-індустрії з 2003 року. В 2009р. заснував проект Український WordPress (що у подальшому став офіційним сайтом команди локалізації WordPress в Україні). З 2010 року засновник і технічний директор проекту Український хостинг для WordPress (WPHost.me) - повноцінного хостинг-сервісу, максимально оптимізованого на використання CMS WordPress.

коментарі 2

  1. Pingback: Працюємо із custom post type. Урок 2 » Як зробити » Український Wordpress

  2. Якраз шукав урок по цьому плагіну.
    Ви самостійно перекладали плагін?
    Я також займаюся перекладом даного плагіну українською.
    Скиньте переклад

Коментувати