В связи с интересом к плагину для создания аукциона на блоге wordpress, который не было возможности доработать из-за недостатка времени и большого количества ошибок в оригинальной версии, я решил помочь желающим сделать аукцион руками, без плагина. Для этого предлагаю внести изменения в файлы шаблона. Нужно добавить ряд функций и несколько файлов – шаблонов отображения самого аукциона и форму добавления лота. Если в ходе обсуждений вместе придем к тому, что нужен-таки плагин, значит скомпилирую полученный код и выложу в репозитарий плагинов WordPress.
Делать будем вместе с нуля и по шагам. Идея основана на новшестве WordPress 3.0 – Custom Types, которое позволяет добавить свои типы записей, рубрик и меток. Таким образом, мы получим тип записи – Лоты аукционов, типы категорий – Категории аукционов, типы меток – Метки аукционов. На тип данных можно выставить необходимые права, что бы зарегистрированные пользователи могли добавлять лоты, но не могли писать и редактировать записи в блоге.
Для начала нужно поэкспериментировать с типами данных, поэтому я создал демо-сайт для аукциона и добавил одну функцию в файл functions.php в теме блога.
Вот код функции:
/* Функция регистрирует:
@ тип записей lots, которая будет использоваться для хранения лотов аукциона,
@ категории и меток для лотов
@ выставляет права для различных типов пользователей
*/
function types_create() {
//Сбросить
flush_rewrite_rules( false );
//Регистрируем тип записей lots [см.: http://codex.wordpress.org/Function_Reference/register_post_type ]
register_post_type( 'lots', array(
'label' => 'Аукцион',
'labels' => array(
'name' => 'Лоты',
'singular_name' => 'Лот',
'add_new' => 'Добавить лот',
'add_new_item' => 'Добавить лот',
'new_item' => 'Добавить лот',
'edit_item' => 'Редактировать лот',
'view_item' => 'Посмотреть',
'search_items' => 'Поиск',
),
'capability_type' => 'post',
//Создаем свои правила для раздачи прав на редактирование, удаление, публикацию
'capabilities' => array(
'edit_post' => 'edit_lot',
'edit_posts' => 'edit_lots',
'delete_posts' => 'delete_lots',
'read' => 'read_lot',
'edit_published_posts' => 'edit_published_lots',
'delete_published_posts' => 'delete_published_lots',
'edit_others_posts' => 'edit_others_lots',
'delete_others_posts' => 'delete_others_lots',
'publish_posts' => 'publish_lots'
),
'taxonomies' => array('lot_cat','lot_tag'),
'hierarchical' => false,
'public' => true,
'_builtin' => false,
'_edit_link' => 'post.php?post=%d',
'query_var' => true,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields', 'comments', 'revisions' ),
) );
/*
Регистрируем категории лотов см: http://codex.wordpress.org/Function_Reference/register_taxonomy
*/
register_taxonomy('lot_cat', 'lots', array(
'label' => 'Категории лотов',
'public' => true,
'show_in_nav_menus' => true,
'show_ui' => true,
'hierarchical' => true,
'rewrite' => true,
));
/*
Регистрируем теги для лотов см: http://codex.wordpress.org/Function_Reference/register_taxonomy
*/
register_taxonomy('lot_tag', 'lots', array(
'label' => 'Метки лотов',
'public' => true,
'show_in_nav_menus' => true,
'show_ui' => true,
'hierarchical' => false,
'rewrite' => true,
));
register_taxonomy_for_object_type('lot_tag', 'lots');
register_taxonomy_for_object_type('lot_cat', 'lots');
$GLOBALS['wp_rewrite']->flush_rules();
/* Права для админа */
$role =& get_role('administrator');
$role->add_cap('edit_lot');
$role->add_cap('edit_lots');
$role->add_cap('publish_lots');
$role->add_cap('edit_published_lots');
/* Права для редактора */
$role =& get_role('editor');
$role->add_cap('edit_lot');
$role->add_cap('edit_lots');
$role->add_cap('publish_lots');
$role->add_cap('edit_published_lots');
/* Права для автора */
$role =& get_role('author');
$role->remove_cap('publish_lots');
$role->add_cap('unfiltered_html');
$role->add_cap('edit_lots');
$role->add_cap('edit_lot');
// ... по аналогии можно дать права для пользователей участник и подписчик
}
// добавляем тип данных при инициализации блога.
add_action( 'init', 'types_create',0 );
После добавления этого кода в functions.php, зашел в админку и увидел пункт “Лоты“, в котором есть подразделы Лоты, Добавить лот, Категории лотов, Метки лотов. Добавил лот и получил страницу с адресом:
http://au.madweb.ru/lots/реклама-на-сайте/
Можно добавить так же другие типы рубрик, например регионы/города, типы аукциона (т.е. Английский, Голландский) и т.д. Хранить дополнительные поля, такие как стартовая цена, блиц-цена, дата начала, дата окончания и т.п. можно в произвольных полях (post_meta).
Это уже можно протестировать и перейти к следующему шагу – шаблонам. Нужно будет сделать отображение ленты лотов, шаблоны самих лотов, а так же страницы архивов по категориям и меткам лотов (и других типов рубрик, если требуется).
Жду ваших вопросов и идей по функционалу аукциона.
Комментариев пока нет.
и как данный скрипт привязать к вордпрессу чайнику?
Тут есть кто живой?
Если есть то как идут дела по этой теме?
И можно ли получить этот набор в архиве?