WordPress, основы custum post type (1 из 3)

31 Дек
2011

Доброго времени суток, дорогие блогавчане, я уже много лет делаю сайты на wordpress и решил поделится своим опытом. Мне сильно порадовала новость ранее опубликованная aleksandrit, о том что «WordPress используется уже на более чем 50 миллионах сайтов«, это новость вдохновляет все больше изучать глубокие и скрытые возможности WordPress. Ранее подобная тема уже была опубликована bRuzом но я бы хотел подойти к вопросу иначе, шаг за шагом. И так начнем с очевидного.

Зачем нужны custum post type

  Главная цель custum post type позволить разработчику организовать данные на сайте. например: если речь идет о блоге, то у нас есть несколько типов данных(записи, медиафайлы, страницы и ссылки). Но что делать тем у кого сайт посвящен? новинкам кино индустрии? подобному сайту понадобится такой тип записей как «Обзор», у обзора должны быть такие характеристики как: жанр, год выпуска, обложка, актеры и т.д… Использования custum post type в отличие от обычных записей, дает нам возможность использовать эти данные в шаблоне, а так же искать по определенным параметрам и сортировать.

Начнем создавать

  Для того чтоб создать новый тип записи нам понадобится редактировать файл functions.php который находится в директории используемого шаблона.
function create_post_type() { // создаем новый тип записи

 register_post_type( 'reviews', // указываем названия типа

 array( 

 'labels' => array( 

 'name' => __( 'Обзоры' ), // даем названия разделу, для панели управления

 'singular_name' => __( 'Обзор' ) // даем названия одной записи

 ), 

 'public' => true, 

 'menu_position' => 5, // указываем место в левой баковой панели

 'rewrite' => array('slug' => 'reviews') // указываем slug для ссылок например: mysite/reviews/

 ) 

 ); 

 } 

 add_action( 'init', 'create_post_type' ); // инициируем добавления типа
  И так что получилось, image Обратите внимания на то что в левой панели появилась вкладка обзоры. image Как мы видим на этой картинке у нас появились пару проблем. заголовок все еще остался таким «Добавить запись» и нету возможности добавить обложку. Попробуем это исправить, для этого нам понадобится добавить пару параметров (полный список параметров ищите в кодексе).
function create_post_type() { // создаем новый тип записи

 register_post_type( 'reviews', // указываем названия типа

 array( 

 'labels' => array( 

 'name' => __( 'Обзоры' ), // даем названия разделу для панели управления

 'singular_name' => __( 'Обзор' ), // даем названия одной записи'add_new' => _x('Добавить новый'),// далее полная русификация админ. панели 'add_new_item' => __('Добавить новый обзор'), 'edit_item' => __('Редактировать обзор'), 'new_item' => __('Новый обзор'), 'all_items' => __('Все обзоры'), 'view_item' => __('Просмотр обзора'), 'search_items' => __('Поиск обзора'), 'not_found' => __('Нет обзоров'), 'not_found_in_trash' => __('обзоры не найдены'), 'menu_name' => 'Обзоры'

 ), 

 'public' => true, 

 'menu_position' => 5, // указываем место в левой баковой панели

 'rewrite' => array('slug' => 'reviews'), // указываем slug для ссылок например: mysite/reviews/ 'supports' => array('title', 'editor', 'thumbnail', 'revisions') // тут мы активируем поддержку миниатюр 

 ) 

 ); 

 } 

 add_action( 'init', 'create_post_type' ); // инициируем добавления типа
  Результат: image И так, теперь мы полностью исправили русификацию и сделали возможным прикрепления миниатюр к нашему новому типу записи. теперь мы можем создать шаблон который будит показывать наши записи.

Loop

  Если честно, мне приходят в голову два способа отображения нового типа записи. и так примеры: Первый способ: использовать шаблонный файл, допустим тип новой записи называется ‘reviews’, в этом слачае мы создаем файл под названием archive-reviews.php для отображения множество записей и single-reviews.php для отображения одной записи (оффтоп. приятный пример иерархии всех шаблонов прекрасно отображён на данной инфограме) далее мы используем простой код итерации по записям:
<?php while ( have_posts() ) : the_post(); ?>стандартная итерация по массиву 

 the_title();// заголовок 

 php the_post_thumbnail(array(150,150)); //получаем миниатюру записи

 echo '';

 the_content();// запись 

 echo '';

endwhile;
Второй способ:вызов лупа из любой части шаблона,
 $args = array( 'post_type' => 'reviews', 'posts_per_page' => 10 );//тут мы указываем на тип записи по которой желаем пройтись и количество записей на одной странице 

 $loop = new WP_Query( $args );// получаем результат запроса в переменное loop

 while ( $loop->have_posts() ) : $loop->the_post(); // далее стандартная итерация по массиву

 the_title();// заголовок 

 php the_post_thumbnail(array(150,150)); //получаем миниатюру записи

 echo '';

 the_content();// запись 

 echo '';

 endwhile;
надеюсь вам понравилось и статья была полезной, все же первый пост. с появлением столь простого инструмента, wordpress стал полноценным cms хотя все еще позиционирует себя как блог. В следующий раз я хотел бы раскрыть такую прекрасную функцию как Taxonomies и custom fields Источники и вдохновители: WordPress codex Wptuts
По материалам Хабрахабр.



загрузка...

Комментарии:

Наверх