Давно хотел написать этот цикл статей, но останавливала одна вещь, о которой будет сказано ниже.
Ну а в этой статье мы поговорим о том, как можно без знания php создавать сайты с любой структурой на wordpress.
Что же меня останавливало? На самом деле я хотел написать статью о том, как без плагинов создавать абсолютно любую структуру сайта, но ведь это смогут реализовать только те, кто разбирается в wordpress и его коде, а такие уже и сами знают как это сделать. А так как большая часть пользователей — новички, то им нужно что-то более простое. Поэтому пришлось изучить все плагины, которые работают с новой функцией в wordpress 3 версий — custom post type.
Итак, задача была такая — без особых трудозатрат и знаний сделать на wordpress несколько типов записей, для каждого из них создать отдельный шаблон для вывода, свой набор рубрик и параметров, свой набор значений, которые можно указывать в админпанели.
Реализуется это так:
- типы записей (к примеру это будет отдельный раздел на сайте, где будут новинки кино) — через custom post type (типы записей)
- отдельные рубрики и метки (к примеру, это будет рубрики «комедия», «ужастики» и т.д., а также метки-актеры) через custom taxonomy (таксономию)
- отдельные значения в админке (к примеру, вы захотите сразу указывать отдельно в админке рейтинг фильма на кинопоиске) — custom meta box. (мета блоки)
Яндекс.ДиректВсе объявления
Пускай названия вас не пугают, все очень просто на самом деле.Сделать сайт с нуля Узнай, как сделать сайт с нуля на реальном примере! srs.myrusakov.ru |
Сначала ничего путевого найти не удавалось. То плагины были слишком простые, то слишком сложные, то не хватало функционала. Единственное, что сразу нашел интересного — custom post type ui. Очень хороший плагин, он умеет создавать новые типы записей и таксономию, но к сожалению в нем нельзя прописывать отдельные поля ввода для каждой записи, поэтому поиски продолжились, пока не нашлось самое лучшее решение о котором я и расскажу.
И решение это — серия плагинов More Types, More Fields, More Taxonomies.
Все они написаны одним автором, дополняют друг друга и могут работать по отдельности. такой подход мне нравится — так как, если к примеру, мне нужно создать всего лишь новый тип записей, но меня устраивают стандартные поля и таксономия — то зачем мне лишние плагины, если можно установить один. Но по порядку.
1. More Types — плагин для создания новых типов записей.
Сразу скажу небольшую проблему — пока что нет русской локализации, но плагины хорошо организованы, в них легко разобраться, да и я расспишу основные действия.
После активации, увидите страничку с кнопкой «Add new Post Type» — жмем её
Первые 2 значения Post type name singular, Post type name plural — это название вашего типа записей. Как видите, первое значение я написал на латинице — оно будет браться для функций движка (n.b. чтобы не было путаницы, пишите с маленькой буквы), второе — на русском, это значение будет использовано для админки.
Hierarchical — это значение указывает сможет ли тип записей иметь дочерние элементы (к примеру, как страницы и подстраницы) или нет.
Menu icon — сюда вставляем ссылочку на иконку для админки размером 16*16
Post type template — если для вывода этого типа данных вы сделали отдельный шаблон (расскажу в следующей части статьи), то здесь можно его выбрать
Features — здесь указываем какой стандартный набор полей будет у этого типа записей.
Additional boxes — это поле будет доступно только при включенном плагине More Fields о котором ниже
Taxonomies — указываем таксономию, добавлять новую можно при помощи плагина More Taxonomies о которм ниже.
Помимо стандартных значений, в плагине доступны ещё и дополнительные, для этого нажимаем на ссылку Advanced settings ниже и видим новые значения. Расскажу о некоторых.
Menu position — позиция блока в админке — вводим цифру
Enable permalinks — включает ЧПУ
Permalink base — ЧПУ база, т.е. как будет выглядеть урл вашей записи. Например, введем book, тогда ссылки этого типа записей будут выглядеть как сайт.ру/book/названиестатьи
Exclude from search — включить или нет тип записей в поиск
Далее идет много значений вроде Edit capability и т.д. — здесь нужно выбрать кому будет доступны права на добавление, удаление, чтение этого типа записей
После это идут значения ‘Add New’ text и т.д. — здесь вы можете перевести стандартные фразы, которые будут выводится в админке.
После того как все заполните и сохраните у вас должно появиться что-то вроде
Но это не все. Представьте, что вам хочется к каждой книге добавлять отдельную миниатюру, а также отдельно записывать вашу рецензию на книгу и вы хотите, чтобы можно было бы удобно добавлять все это с админки. Тут нам поможет следующий плагин.
2. More Fields — плагин для добавления новых полей ввода.
Как и в предыдущем случае, после активации в настройках плагина вам нужно будет нажать на кнопочку «Add new input box». Здесь мы укажем имя для новой группы полей и в каком типе записей они будут доступны. Потом сохраняем и возвращаемся к настройкам плагина, где вы увидите вашу новую группу. Жмем на неё. Здесь вы увидите, что можно добавлять новые поля нажав на кнопку Add new Field. Делаем это.
Field title — название поля
Custom field key — здесь на латинице пишем идентификатор, который будем использовать в дальнейшем для вывода содержимого на сайте. Стоит сделать здесь отступление — в чем прелесть данного плагина, он не пишет данные в какие-то свои таблицы. Любое поле, которые вы здесь создаете — автоматически будет трансформироваться в custom field — т.е. тоже самое вы могли бы сделать, если бы в админке добавляли дополнительное поле, прописывали бы его значение и т.д. Просто плагином мы можем сразу создать нужный набор полей, и кроме того, можем вставлять не только поле для ввода, но и другие типы форм — селекты, выбор даты, поле для ввода файлов и т.д.
Caption — здесь, если нужно пишем какое-то описание к полю, которое будет выводится в админке.
Далее идет выбор типа поля. Можете сделать его чем угодно, даже можно добавить стандартный виз редактор к полю, для этого отметьте WYSIWYG. Если нужно сделать выпадающий список с выбором значений, отметьте галочкой select, а в самом нижнем поле перечислите все значения через запятую, причем для значения по умолчанию поставьте рядом с ним символ звездочки, вот так Drums, Bells, *Whistles
На этом, с этим плагином все.
Но что если на нашем сайте книг вам захочется иметь больше параметров, чем просто рубрики и метки. Допустим вы хотите, чтобы были не только рубрики новинки, детективы, романы и т.д., а ещё и книги в твердом переплете, мягком переплете и т.д. Или же сортировка книг по цене.
Это называется пользовательская таксономия и чтобы не добавлять её внося разные коды в тему, мы используем следующий плагин.
3. More Taxonomies.
Сами настройки плагина очень схожи с первым плагином, поэтому все описывать не буду, расскажу о некоторых.
Hierarchical — указываем будет ли новый параметр иметь вложенные. Как пример, рубрики — имеют вложенные рубрики, а метки — нет.
Taxonomy slug — указываем на латинице название, которое будет использоваться в урле новой таксономии.
Вот и все. В следующей части я расскажу как же теперь все эти новые типы записей вывести на сайте, покажу разные примеры и интересные решения. Ну а если вы все таки хотите самостоятельно, без помощи плагинов настроить новые типы записей, советую почитать следующие материалы:
ENG
Custom post type
http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress
http://wpengineer.com/1969/impressions-of-custom-post-type/
http://thinkvitamin.com/code/create-your-first-wordpress-custom-post-type/
http://wptheming.com/2010/07/custom-post-type-resources/
http://sicdigital.com/2010/07/create-custom-post-type-for-image-upload-wordpress3/
http://codex.wordpress.org/Custom_Post_Types
Custom taxonomy
http://justintadlock.com/archives/2010/06/10/a-refresher-on-custom-taxonomies
http://codex.wordpress.org/Custom_Taxonomies
Add custom metabox
http://wptheming.com/2010/08/custom-metabox-for-post-type/
http://www.tanzilo.com/2009/01/15/wordpress-adding-a-custom-option-box-and-developing-file-upload-plugin/
РУ
Новые типы записей
http://www.wordpresser.ru/razrabotka-na-wordpress/nastraivaemye-tipy-zapisej-v-wordpress-3-0.html
http://dandreev.com/blog/wordpress/sozdanie-biblioteki-ili-custom-post-types/
Таксономия
http://dreamhelg.ru/2010/05/intorducing-into-custom-taxonomy-wordpress-3-0/
Ну а когда сделаете свой сайт, то его стоит проверить на юзабилити-тестирование для того, чтобы улучшить конверсию и отдачу.
Делаем сайт с гибкой структурой на wordpress. Часть 2.
wordpress, дата:
15 12, 2010 |
11 комментариев
В предыдущей части мы научились добавлять в админку функционал новых типов записей, новые поля для ввода данных, а также новую таксономию. Но теперь ведь нужно это все отобразить на сайте.
Как это сделать я и расскажу в этой части.
Прежде всего, хочу сказать, что считаю возможности wordpress 3.0 версии пока что сыроваты в плане правильного вывода информации с пользовательских типов данных, без плагинов и хаков не обойтись, тем не менее, многие недочеты планируют устранить в 3.1 версии, которая должна выйти уже довольно скоро.
Но по порядку.
К примеру, мы создали сайт-каталог книг, в котором есть новые типы записей «книги» (book), для этого типа записей мы добавили 2 дополнительных поля — поле с миниатюрой (ima) и поле с рецензией(desc) + добавили таксономию в виде рубрик с описанием обложки книг.
Выводить все данные мы будем в виде архива- ленты постов с этими книгами и при клике на каждую запись с этого архива, попадаем на полное описание каждой книги.
Как сделать вывод полного описания произвольного типа записей с новыми полями
Для вывода полного описания в wordpress используется шаблон single.php — но в нашем случае, нам нужно сделать эту страничку отдельной, не похожей на остальные. Для этого копируем single.php и переименовываем его в single-book.php — причем book — это название-идентификатор вашего нового типа записей.Как вы помните, мы добавляли 2 новых поля. Первое поле с картинкой (Custom field key — ima)
Второе поле с рецензией (Custom field key — desc)
Вывести их в шаблоне — очень легко, они доступны как обычные custom fields и выводятся точно также. В нашем случае, это будет
<?php
$postimageurl
= get_post_meta(
$post
->ID,
'ima'
, true);
if
(
$postimageurl
) { ?>
<img src=
"<?php echo $postimageurl; ?>"
alt=
"<?php the_title(); ?>"
/>
<?php }
else
{ ?>
<img src=
"<?php bloginfo('template_url'); ?>/images/noimage100.gif"
alt=
"Миниатюра отсутствует"
/>
<?php } ?>
Можно ещё больше упростить. Сделать так
<?php
echo
get_post_meta(
$post
->ID,
'ima'
, true) ?>
Тоже самое делаем и для рецензии
<?php
echo
get_post_meta(
$post
->ID,
'desc'
, true) ?>
ОЧЕНЬ ВАЖНОЕ ЗАМЕЧАНИЕ. Если вы используете ЧПУ, то
часто возникнет ситуация, что вроде все сделали правильно, а на выходе
получите 404 ошибку. Не расстраивайтесь, просто зайдите в админке
настройки-постоянные ссылки (ЧПУ) и нажмите обновить.
Яндекс.ДиректВсе объявления
Ваш новый Фотобанк Более 11 000 000 изображений. Низкие цены. Множество вариантов оплат. depositphotos.com |
Как сделать архив с произвольными типами записей.
Вот здесь нас ожидает засада. По идее, архив должен был быть доступен по ссылке сайт.ру/books. Но вместо этого вы получите 404 ошибку. В следущей версии wordpress нам обещают исправить этот недочет, а пока я вам расскажу как обойти эту проблему.Для начала создайте страницу с одноименным названием с вашим типом записей. У меня это book. После этого создаем файлик в папке вашей темы и называем его как угодно, допустим booktemplate.php В начало этого файла вставляем
<?php
/*
Template Name: Книги
*/
?>
Вот теперь, этот шаблон будет использоваться как архив.
Но нужно указать как выводить записи в нем. Поэтому, вместо обычного цикла пишем следующее
<?php
$books
=
new
WP_Query(
'post_type=book&post_status=publish'
);
if
(
$books
->have_posts()) <img src=
"http://fleek.org/wp-includes/images/smilies/icon_confused.gif"
alt=
":?"
class
=
"wp-smiley"
> >
<?php
while
(
$books
->have_posts()) <img src=
"http://fleek.org/wp-includes/images/smilies/icon_confused.gif"
alt=
":?"
class
=
"wp-smiley"
> >
<?php
$books
->the_post();
// получаем таксономию
$cover
= get_the_term_list(
$post
->ID,
'cover'
,
''
,
', '
);
?>
<div id=
"title-block"
>
<h1><a href=
"<?php the_permalink();?>"
><?php the_title(); ?></a></h1>
<div
class
=
"post-meta"
>
<?php the_time(
'j F Y'
) ?> |
<?php
echo
$cover
?>
</div>
</div>
<div id=
"text-content"
>
<?php the_content(); ?>
<div
class
=
"clear-float"
></div>
</div>
<?php
endwhile
; ?>
<?php
else
: ?>
<div
class
=
"post"
>
<h2><?php _e(
'Error 404'
); ?></h2>
</div>
<?php
endif
; ?>
$cover
= get_the_term_list(
$post
->ID,
'cover'
,
''
,
', '
);
Но и здесь нас ожидает проблема — этот код не поддерживает пагинацию, и чтобы вылечить, придется помучиться с кодом. Так что лучше подождать следующую версию в которой будет поддержка архивов.
По поводу новой таксономии, по умолчанию, если вы перейдете по ссылке — то будет все та же 404 ошибка. Ведь, если не указать определенный шаблон для вывода новой таксономии, то будет использован шаблон category.php или archive.php — а в нем не указан вывод нового типа записей. Поэтому для того, чтобы создать архив для новой таксономии, вам нужно сделать тоже, что и в предыдущем шаге, только не обязательно вставлять в начало файла
<?php
/*
Template Name: Книги
*/
?>
Вот и все на сегодня, как только выйдет новая версия wordpress, то я обязательно расскажу о нововведениях, которые ещё больше упростят работу с новыми типами данных.
У вас завал на работе, куча документов и их некому разгребать. Читайте как настроить автоматизацию документооборота
have_posts()) >
я попробовал сделать как тут написано.
появилась ошибка:
Parse error: syntax error, unexpected ‘<' in …bp-themes/bp-default/page2.php on line 18
Сначала линия 16. Увидел картинку. Удалил.
Далее ошибка указала на линию 18. Удалил и вторую картинку, но ошибка с линии 18 не исчезла. А программист пхп из меня мягко сказать слабый )
-
-
-
Parse error: syntax error, unexpected ‘<' in /sata2/home/users/mtkun/www/www.mtkun.com/wp-content/themes/business-success/interest.php on line 7 Как это понимать и что делать?
Спасибо
-
не знаете это исправили в новых версиях
-
Все равно респект, «от себятины» в сети на самом деле мало последнее время почему-то ))
Таксономия — слабое место WP, ваша статья позволяет это исправить.
Best!
с моими знаниями ХТМЛ редактировать код — эт беда… может подскажете как это перебороть?
http://fleek.org/fleekaj/WBVNEgxMS08JSgBJEwdKQhdaFlVORkAVRFgWEhZFWhZZAhYSWhYDUQgVCVYTBxRFQEUBQUxCRwpaUEkCWEVUEkkRXF1EBhRUD10XBFdBSV5KQUkDWAMGVgwC/
Статья просто снос мозга! Спасибо!
Кто то столкнулся со следующей проблемой?
1. WP 3.1.2 + More Type 1.1b (последняя версия на сегодня)
2. Поставил.
2.1. Выдало ошибку как в предшествующем комментарии сказано http://fleek.org/custom-post-type-wordpress-1/comment-page-1/#comment-9817
2.2. Поправил как на форуме написали. Вроде запустился.
3. Захожу в список записей, все ОК. Захожу в карточку записи. Опля! Кракозябры! По всей странице и всем полям. Выхожу из записи. Все ОК.
Есть решения?
1. Сообщение об ошибке:
Warning: call_user_func_array() [function.call-user-func-array]: First argument is expected to be a valid callback, ‘Array’ was given in /public_html/wp-includes/plugin.php on line 395
2. Снимок:
http://fleek.org/fleekaj/WBVNEgxMS1YHSgtdTxBMHl1cF1lOBAdUAABcUA4BBVcfMloQUwYKewpRFBcRDF4fUUEJXg==/
цитата от сюда http://fleek.org/fleekaj/WBVNEgxMS1UfTwtLBRJLVEpGSkAUGkYQREcLFE0eQw9VFk0NRgoHFhZQFAYIBgQHCQVU/
AddDefaultCharset UTF-8
в файле .htaccess есть?
решение тут
http://fleek.org/fleekaj/WBVNEgxMS08JSgBJEwdKQhdaFlVORkAVRFgWEhZFWhZZAhYPWREBFRJBFFwST1xDS1oWHw9QQkhAVgNLWlBBA1cOSxtAAggVElkDWAUGWl1QVg9cBEIYWkZSFApQVEZbBQ==/
Все! Плагины заработали как надо! Я балдю!
Адресс страницы получается такой http://fleek.org/fleekaj/WBVNEgxMS0sPTAEXExcWQklaFkZORVoWQFkFC1w=/
При переходе открывается главная страница вместо той, что нужна. Если Permalink base не использовать, то все работает. Что это может быть?
ЧПУ были проставленны еще до установки плагина.