Доброго времени суток, дорогие хабравчане, я уже много лет делаю сайты на wordpress и решил поделится своим опытом. Мне сильно порадовала новость ранее опубликованная aleksandrit, о том что "WordPress используется уже на более чем 50 миллионах сайтов", это новость вдохновляет все больше изучать глубокие и скрытые возможности Wordpress. Ранее подобная тема уже была опубликована bRuzом но я бы хотел подойти к вопросу иначе, шаг за шагом.
И так начнем с очевидного.
Главная цель custum post type позволить разработчику организовать данные на сайте. например: если речь идет о блоге, то у нас есть несколько типов данных(записи, медиафайлы, страницы и ссылки). Но что делать тем у кого сайт посвящен? новинкам кино индустрии? подобному сайту понадобится такой тип записей как «Обзор», у обзора должны быть такие характеристики как: жанр, год выпуска, обложка, актеры и т.д… Использования custum post type в отличие от обычных записей, дает нам возможность использовать эти данные в шаблоне, а так же искать по определенным параметрам и сортировать.
Для того чтоб создать новый тип записи нам понадобится редактировать файл functions.php который находится в директории используемого шаблона.
И так что получилось,
Обратите внимания на то что в левой панели появилась вкладка обзоры.

Как мы видим на этой картинке у нас появились пару проблем. заголовок все еще остался таким «Добавить запись» и нету возможности добавить обложку. Попробуем это исправить, для этого нам понадобится добавить пару параметров (полный список параметров ищите в кодексе ).
Результат:

И так, теперь мы полностью исправили русификацию и сделали возможным прикрепления миниатюр к нашему новому типу записи. теперь мы можем создать шаблон который будит показывать наши записи.
Если честно, мне приходят в голову два способа отображения нового типа записи. и так примеры:
Первый способ: использовать шаблонный файл, допустим тип новой записи называется 'reviews', в этом слачае мы создаем файл под названием archive-reviews.php для отображения множество записей и single-reviews.php для отображения одной записи (оффтоп. приятный пример иерархии всех шаблонов прекрасно отображён на данной инфограме) далее мы используем простой код итерации по записям:
Второй способ: вызов лупа из любой части шаблона,
надеюсь вам понравилось и статья была полезной, все же первый пост. с появлением столь простого инструмента, wordpress стал полноценным cms хотя все еще позиционирует себя как блог.
В следующий раз я хотел бы раскрыть такую прекрасную функцию как Taxonomies и custom fields
Источники и вдохновители:
Wordpress codex
Wptuts
И так начнем с очевидного.
Зачем нужны 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 для ссылок например: http://mysite/reviews/
)
);
}
add_action( 'init', 'create_post_type' ); // инициируем добавления типа
И так что получилось,

Обратите внимания на то что в левой панели появилась вкладка обзоры.

Как мы видим на этой картинке у нас появились пару проблем. заголовок все еще остался таким «Добавить запись» и нету возможности добавить обложку. Попробуем это исправить, для этого нам понадобится добавить пару параметров (полный список параметров ищите в кодексе ).
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 для ссылок например: http://mysite/reviews/
'supports' => array('title', 'editor', 'thumbnail', 'revisions') // тут мы активируем поддержку миниатюр
)
);
}
add_action( 'init', 'create_post_type' ); // инициируем добавления типа
Результат:

И так, теперь мы полностью исправили русификацию и сделали возможным прикрепления миниатюр к нашему новому типу записи. теперь мы можем создать шаблон который будит показывать наши записи.
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