—»     —»   Работаем с собственными типами записей (Post Type) – Часть 2
  Раздел: Wordpress   Нет комментариев  

Работаем с собственными типами записей (Post Type) – Часть 2



В первой части нашей статьи, посвященной созданию и использованию собственных типов записей, мы охватили суть пользовательских собственных типов записей в Wordpress, а также постарались начать работать над созданием собственных типов. Мы также осветили способы сохранения модульности за счет использования отдельного PHP-файла, что позволяет нам переносить типы записей от шаблона к шаблону.

Сегодня же мы хотим рассказать вам о процессе создания таксономии для собственных типов постов, а также о создании собственных полей и мета-блоков, о сохранении данных и использовании их в собственных шаблонах для Wordpress.

Давайте приступим!

Создание таксономии (для возможности сортировки по категории)

Следующим этапом в нашем обучении будет создание таксономий, которые позволяют нам сортировать собственные типы записей по категориям. С точки зрения эффективности это примерно то же самое, что и категории для записей, за исключением того, что мы можем сделать из них все, что угодно всего за счет нескольких строчек кода.

Для этого мы будем использовать Wordpress-функцию register_taxonomy();. Как вы можете видеть ниже и в codex.wordpress.org, аргументы, которые она принимает, это taxonomy, за которым следует тип объекта и, наконец, $args. Для нашего примера мы создали 2 таксономии – Skills и Club Level. Мы применяем таксономии к типу записей athlete, а затем задаем аргументы, включая ярлыки и переписываем привилегии. Давайте взглянем на код.

register_taxonomy("Sport", array("athlete"), array("hierarchical" => true, "label" => "Sport", "singular_label" => "Sport", "rewrite" => true));
register_taxonomy("Club Level", array("athlete"), array("hierarchical" => true, "label" => "Club Level", "singular_label" => "Club Level", "rewrite" => true));

Зарегистрированные таксономии выглядят примерно следующим образом.

Работаем с собственными типами записей (Post Type) – Часть 2

Вы можете кликнуть по типу записи, и вы будете перенаправлены на страницу очень схожую со страницей категории, где у вас будет возможность добавлять собственные таксономии.

Закончили уже?

Хм, в целом, у вас уже есть собственный тип записи, который функционирует. Но на данный момент он ничем не отличается от обычных записей. Давайте окунемся в создание собственных полей для ваших записей, которые позволят вам указывать уникальную информацию, а затем отображать её в шаблонах.

Создание собственных полей

Для того чтобы начать творить настоящее волшебство с помощью собственных типов записей, для начала вам нужно будет инициализировать функцию для возможности добавлять мета-блоки. Нашу мы назовем admin_init(), и выглядеть она будет следующим образом:

add_action("admin_init", "admin_init");

function admin_init(){
add_meta_box("personal_info", "Personal Info", "personal_info", "athlete", "normal", "low");
}

Первая часть нашего кода инициализирует функцию admin_init(). Понятно, что вторая часть данного кода представляет собой саму функцию. В целом, этот код сообщает вашему шаблону о необходимости создать новый мета-блок под названием «Personal Info», поместить его в тип записи athlete и затем дать ему низкий приоритет (расположение в типе записи).

Круто! Ну а теперь мы закончили?

Нет еще. Но уже совсем близко! Давайте добавим еще несколько собственных полей. Это больше относится к HTML, нежели к PHP.

Создание полей в собственных мета-блоках

А теперь начинается самое интересное. Мы собираемся создать мета-блок с личными данными (мы его уже сделали выше, а сейчас собираемся заполнить его), который будет спрашивать имя и фамилию человека, пол, адрес электронной почты, номер телефона и дату рождения.

Для того чтобы сделать это, мы создаем функцию под названием personal_info(). Та же функция, которую мы вызывали в функции admin_init(). А теперь, включаем свет? Все линии сходятся.

Внутри функции мы сначала выставляем несколько переменных. Объявляем переменные для $custom, а затем, используя эту переменную, создаем переменные для остальных полей. После этого мы закрываем PHP, и генерируем поля посредством HTML. Мы используем таблицы просто для того, чтобы облегчить процесс, и для того, чтобы сохранить возможность быстро импортировать их в другие типы записей, но вы можете использовать div’ы.

function personal_info() {
global $post;
$custom = get_post_custom($post->ID);
$first_name = $custom["first_name"][0];
$last_name = $custom["last_name"][0];
$gender = $custom["gender"][0];
$email = $custom["email"][0];
$phone = $custom["phone"][0];
$birthday = $custom["birthday"][0];
?>
<table cellspacing="2">
<tr>
<td>
<label>Name:</label>
</td>
<td>
<input type="text" name="first_name" placeholder="First Name" value="<?php echo $first_name; ?>">
</td>
<td>
<input type="text" name="last_name" placeholder="Last Name" value="<?php echo $last_name; ?>">
</td>
</tr>
<tr><td><label>Gender:</label></td><td><input type="text" name="gender" placeholder="Male or Female" value="<?php echo $gender; ?>"></td></tr>
<tr><td><label>Email:</label></td><td><input type="text" name="email" placeholder="you@gmail.com" value="<?php echo $email; ?>"></td></tr>
<tr><td><label>Phone:</label></td><td><input type="text" name="phone" placeholder="(540) 555-5555" value="<?php echo $phone; ?>"></td></tr>
<tr><td><label>Birthday:</label></td><td><input type="text" name="birthday" placeholder="12/12/1987" value="<?php echo $birthday; ?>"></td></tr>
</table>
<?php
}

Ну что, справились? Наконец-то закончили?

Уже совсем близко! Теперь осталось все это сохранить.

Сохраняем данные собственных типов записей

Последний кусочек паззла заключается в том, что мы сохраняем данные собственных типов записей в базу данных. Для того чтобы сделать это, мы создаем новую функцию под названием save_details(), которая сообщает WordPress извлечь то, что находится в этом мета-блоке, и разместить это в базе данных. Она так же сообщает WordPress то, что если эти данные уже есть в базе данных, нужно проверить, не изменились ли они, и если значения изменились, обновить их в базе.

А теперь давайте посмотрим на код:

add_action('save_post', 'save_details');

function save_details(){
global $post;
$postID = $post->ID;

// To prevent metadata or custom fields from disappearing...
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE )
return $postID;

update_post_meta($postID, "first_name", $_POST["first_name"]);
update_post_meta($postID, "last_name", $_POST["last_name"]);
update_post_meta($postID, "gender", $_POST["gender"]);
update_post_meta($postID, "email", $_POST["email"]);
update_post_meta($postID, "phone", $_POST["phone"]);
update_post_meta($postID, "birthday", $_POST["birthday"]);
}

И теперь точно конец! Теперь у вас есть собственный тип записи.

Использование собственных типов записи в шаблонах

В конце концов, нам остается просто использовать собственные типы записей в шаблоне. Конечно же, здесь можно творить любые вариации и методы, но давайте мы покажем то, что нужно для того, чтобы хотя бы начать. Нам нужно включить этот отрывок кода в файлы шаблона:

<?php echo get_post_meta($post->ID, 'first_name', true) ?>

Все довольно просто! Конечно же, не забудьте заменить first_name названием вашего поля. Как только вы включите этот код, все заработает!

А теперь попробуйте самостоятельно сделать собственные типы записей! Удачи вам!
Обнаружили ошибку или мёртвую ссылку?
Выделите проблемный фрагмент мышкой и нажмите CTRL+ENTER.
В появившемся окне опишите проблему и отправьте уведомление Администрации ресурса.
Нужна органическая вечная ссылка из данной статьи? Постовой?
Подробности здесь
Вам понравился материал? Поблагодарить легко!
Будем весьма признательны, если поделитесь этой статьей в социальных сетях:

Ключевые тэги: Wordpress, PHP
Опубликовал Design FactoRy   Прочитано (раз): 11993   |   Нет комментариев
Источник материала / оригинал статьи   Распечатать
Другие статьи и новости по теме:
Добавление комментария
Уважаемые пользователи!
При добавлении комментариев на сайт Вам следует учитывать следующее - все комментарии проверяются Администрацией на предмет отсутствия спама. При обнаружении признаков спама, в оставленном Вами комментарии, сам комментарий будет незамедлительно удалён, а Ваш IP-адрес будет забанен без предупреждения! Учётные записи пользователей, рассылающих спам, блокируются/удаляются без права последующего восстановления.

С уважением, Администрация сайта.
* = поля обязательны к заполнению
Полужирный Наклонный текст Подчеркнутый текст Зачеркнутый текст | Выравнивание по левому краю По центру Выравнивание по правому краю | Вставка смайликов Выбор цвета | Скрытый текст Вставка цитаты Преобразовать выбранный текст из транслитерации в кириллицу Вставка спойлера
Вопрос : Национальная денежная единица США
Подтверждение кода безопасности :

Включите эту картинку для отображения кода безопасности
обновить, если не виден код


Популярные публикации


















Свежие шаблоны сайтов каждый день
С миру по нитке
«    Октябрь 2017    »
ПнВтСрЧтПтСбВс
 1
2345678
9101112131415
16171819202122
23242526272829
3031