На протяжении всей этой серии мы рассматривали таксономии WordPress: что это такое, как они работают, как дифференцировать их между различными типами, которые существуют, и как они хранятся в базовой базе данных.
Единственное, что нам еще предстоит сделать, — это собрать плагин, демонстрирующий, как использовать API для реализации наших собственных таксономий. Итак, в этом посте мы собираемся сделать именно это.
Напомним из первого поста этой серии:
Таксономия является одним из тех слов, которые большинство людей никогда не слышат и не используют. По сути, таксономия — это способ группировать вещи.
И на протяжении всей этой серии мы использовали фотографии и видеографию в качестве примеров классификации. Итак, для плагина, который мы собираемся создать, мы будем включать как иерархические, так и неиерархические таксономии, относящиеся к обеим этим классификациям.
- Иерархические таксономии будут включать базовые таксономии фотографий и видео .
- Неиерархическая таксономия будет использоваться для указания типа фильма, который был использован. Это может быть черно-белый, цветной, сепия или любой другой цвет, который вы хотите указать.
Наконец, плагин будет работать с существующим стандартным типом записей, который поставляется с WordPress. Это должно дать наибольшую гибкость, поскольку это связано с созданием плагина, демонстрацией концепций и использованием его в вашей собственной установке.
Мои Пользовательские Таксономии
В целях примера плагина мы будем называть его My Custom Taxonomies и будем строить его на следующих этапах:
- Мы подготовим файл базового плагина, который имеет правильный текст заголовка, необходимый для отображения плагина на панели инструментов WordPress.
- Мы настроим код, необходимый для запуска основного плагина.
- Мы напишем код, который представит таксономию как фотографий, так и видео .
- Мы напишем код, который представит таксономию типа фильма .
- Затем мы протестируем полный плагин.
1. Заголовок плагина
Прежде чем делать что-либо еще, создайте каталог в wp-content/plugins
называемый my-custom-taxonomies
и представьте файл my-custom-taxonomies.php
.
В файле добавьте следующий блок комментария кода:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
<?php
/**
* My Custom Taxonomies
*
* Demonstrates how to create custom taxonomies using the WordPress API.
* Showcases both hierarchical and non-hierarchical taxonomies.
*
* @link http://code.tutsplus.com/series/the-beginners-guide-to-wordpress-taxonomies—cms-706
* @since 1.0.0
* @package Custom_Taxonomies
*
* @wordpress-plugin
* Plugin Name: My Custom Taxonomies
* Plugin URI: http://example.com/plugin-name-uri/
* Description: Demonstrates how to create custom taxonomies using the WordPress API.
* Version: 1.0.0
* Author: Tom McFarlin
* Author URI: http://tommcfarlin.com/
* License: GPL-2.0+
* License URI: http://www.gnu.org/licenses/gpl-2.0.txt
*/
|
На этом этапе вы сможете войти в панель управления WordPress, увидеть имя плагина и активировать его. Конечно, на самом деле ничего не произойдет, так как мы еще ничего не сделали с исходным кодом.
Далее нам нужно создать еще один файл, который будет использоваться для включения плагина. Это будет основано на принципах объектно-ориентированного программирования, поэтому мы создадим файл с именем class-my-custom-taxonomies.php
.
Пока не беспокойтесь о заполнении его любым исходным кодом. Давайте вернемся назад к my-custom-taxonomies.php
и добавим условие, чтобы убедиться, что основной файл плагина не может быть запущен вне среды WordPress.
1
2
3
4
5
6
|
<?php
// If this file is called directly, abort.
if ( ! defined( ‘WPINC’ ) ) {
die;
}
|
Поместите это прямо под комментарий кода, который мы предоставили выше.
2. Выполнение основного плагина
На данный момент мы готовы написать код, который фактически будет управлять плагином. Итак, давайте определим класс и базовую функцию для инициализации:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
<?php
/**
* The core plugin class file
*
* Defines the functions necessary to register our custom taxonomies with
* WordPress.
*
* @link http://code.tutsplus.com/series/the-beginners-guide-to-wordpress-taxonomies—cms-706
* @since 1.0.0
*
* @package Custom_Taxonomies
* @author Tom McFarlin <[email protected]>
*/
class My_Custom_Taxonomies {
/**
* Initializes the plugin by registering the hooks necessary
* for creating our custom taxonomies within WordPress.
*
* @since 1.0.0
*/
public function init() {
}
}
|
После этого давайте вернемся к my-custom-taxonomies.php
и добавим код для включения файла, а также метод, который создаст экземпляр класса и выполнит его:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
|
<?php
/** Loads the custom taxonomy class file.
require_once( dirname( __FILE__ ) . ‘/class-my-custom-taxonomies.php’ );
/**
* Creates an instance of the My_Custom_Taxonomies class
* and calls its initialization method.
*
* @since 1.0.0
*/
function custom_taxonomies_run() {
$custom_tax = new My_Custom_Taxonomies();
$custom_tax->init();
}
custom_taxonomies_run();
|
Теперь у нас есть все, что нужно, чтобы начать на самом деле настраивать наши хуки и обратные вызовы для создания наших пользовательских таксономий.
3. Введите фотографии и видео
На данный момент мы готовы начать вводить наши таксономии. Сначала мы сосредоточимся на двух наших иерархических таксономиях — Фотографии и видео .
В теле класса class-my-custom-taxonomies.php
добавьте следующую функцию:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<?php
/**
* Creates the Photographs taxonomy that appears on all Post dashboard
* pages.
*
* @since 1.0.0
*/
public function init_photographs() {
$labels = array(
‘name’ => ‘Photographs’,
‘singular_name’ => ‘Photograph’,
‘edit_item’ => ‘Edit Photograph’,
‘update_item’ => ‘Update Photograph’,
‘add_new_item’ => ‘Add New Photograph’,
‘menu_name’ => ‘Photographs’
);
$args = array(
‘hierarchical’ => true,
‘labels’ => $labels,
‘show_ui’ => true,
‘show_admin_column’ => true,
‘rewrite’ => array( ‘slug’ => ‘photograph’ )
);
register_taxonomy( ‘photograph’, ‘post’, $args );
}
|
Эта функция отвечает за создание таксономии Photographs и будет вызываться из функции init, когда придет время.
Теперь давайте сделаем то же самое для видео :
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<?php
/**
* Creates the Videos taxonomy that appears on all Post dashboard
* pages.
*
* @since 1.0.0
*/
public function init_videos() {
$labels = array(
‘name’ => ‘Videos’,
‘singular_name’ => ‘Video’,
‘edit_item’ => ‘Edit Video’,
‘update_item’ => ‘Update Video’,
‘add_new_item’ => ‘Add New Video’,
‘menu_name’ => ‘Videos’
);
$args = array(
‘hierarchical’ => false,
‘labels’ => $labels,
‘show_ui’ => true,
‘show_admin_column’ => true,
‘rewrite’ => array( ‘slug’ => ‘video’ )
);
register_taxonomy( ‘video’, ‘post’, $args );
}
|
Давайте назовем эти два из функции init. Мы делаем это, регистрируя эти функции с помощью ловушки init
как это предусмотрено WordPress:
1
2
3
4
5
6
7
8
|
<?php
public function init() {
add_action( ‘init’, array( $this, ‘init_photographs’ ) );
add_action( ‘init’, array( $this, ‘init_videos’ ) );
}
|
Здесь мы сможем перейти в Add New Post и увидеть наши новые параметры таксономии, видимые на панели инструментов. Если нет, перепроверьте свой код с тем, который указан выше.
Теперь, когда мы ввели наши иерархические таксономии, давайте перейдем к введению нашего типа фильма — или нашей неиерархической — таксономии.
4. Введите тип фильма
Это действительно не сильно отличается от кода, который мы написали до этого момента. Действительно, главное отличие состоит в том, что вместо указания hierarchical
как true
, мы установим его как false
.
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
<?php
/**
* Creates the Film Type taxonomy that appears on all Post dashboard
* pages.
*
* @since 1.0.0
*/
public function init_film_type() {
$labels = array(
‘name’ => ‘Film Type’,
‘singular_name’ => ‘Film Type’,
‘edit_item’ => ‘Edit Film Type’,
‘update_item’ => ‘Update Film Type’,
‘add_new_item’ => ‘Add New Film Type’,
‘menu_name’ => ‘Film Type’
);
$args = array(
‘hierarchical’ => false,
‘labels’ => $labels,
‘show_ui’ => true,
‘show_admin_column’ => true,
‘rewrite’ => array( ‘slug’ => ‘film-type’ )
);
register_taxonomy( ‘film-type’, ‘post’, $args );
}
|
Это приведет к другому типу элемента пользовательского интерфейса, который будет больше похож на теги, а не на параметры категории, которые вы видите выше.
Наконец, добавьте следующую строку в метод init вместе с остальными хуками:
1
2
|
<?php
add_action( ‘init’, array( $this, ‘init_film_type’ ) );
|
Обратите внимание, что функции больше похожи на теги категорий. Повторюсь, это одно из главных различий в иерархических и неиерархических таксономиях.
5. Тестирование полного плагина
Теперь мы готовы дать плагину вращение. Предполагая, что вы правильно следовали всему на протяжении всего этого урока, вы сможете создать новую публикацию, отметить ее типом фотографии или типом видео, а также типом фильма и сохранить изменения после сохранения или сохранения. Обновление вашего поста.
Если нет, перепроверьте свой код с тем, на что здесь ссылаются, и с тем, на что ссылаются в связанном репозитории GitHub.
Вывод
Это завершает Руководство для начинающих по таксономиям WordPress. На протяжении всей серии мы подробно рассмотрели определение таксономий, их роль в WordPress, и мы даже реализовали некоторые из них.
На этом этапе вы должны иметь четкое представление о концепции и о том, как приступить к включению их в ваш следующий проект.
Если нет, не стесняйтесь оставлять вопросы, комментарии или общие отзывы в поле ниже.