Статьи

Создание структуры базы знаний WordPress

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

Следующим шагом является создание структуры для ваших данных.

В этом уроке я проведу вас через:

  • регистрация таксономии для ваших данных
  • удаление таксономий, которые вам не нужны

Чтобы следовать этому уроку, вам понадобится

  • установка для разработки WordPress
  • текстовый редактор
  • стартовая тема

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

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

Итак, моя таблица стилей теперь имеет следующее:

01
02
03
04
05
06
07
08
09
10
/*
Theme Name: Creating a Knowledge Base in WordPress — starting theme
Theme URI: http://rachelmccollin.co.uk
Author: Rachel McCollin
Author URI: http://rachelmccollin.co.uk
Description: The theme to accompany the wptutsplus series on creating a knowledge base using WordPress.
Version: 1.0
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/

Если ваша база знаний использует пользовательские типы сообщений, вам необходимо зарегистрировать их. Вы делаете это, добавляя функцию register_post_type() в файл functions.php вашей темы.

Моя база знаний будет использовать посты с собственными таксономиями, поэтому мне нужно использовать функцию register_taxonomy() .

Откройте ваш файл functions.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
function tutsplus_taxonomies() {
    // Content type taxonomy
    $labels = array(
        ‘name’ => __( ‘Content Types’, ‘tutsplus’ ),
        ‘singular_name’ => __( ‘Content Type’, ‘tutsplus’ ),
        ‘search_items’ => __( ‘Search Content Types’, ‘tutsplus’ ),
        ‘all_items’ => __( ‘All Content Types’, ‘tutsplus’ ),
        ‘edit_item’ => __( ‘Edit Content Type’, ‘tutsplus’ ),
        ‘update_item’ => __( ‘Update Content Type’, ‘tutsplus’ ),
        ‘add_new_item’ => __( ‘Add New Content Type’, ‘tutsplus’ ),
        ‘new_item_name’ => __( ‘New Content Type Name’, ‘tutsplus’ ),
        ‘menu_name’ => __( ‘Content Types’, ‘tutsplus’ ),
    );
 
    $args = array(
        ‘hierarchical’ => true,
        ‘labels’ => $labels,
        ‘show_ui’ => true,
        ‘show_admin_column’ => true,
        ‘query_var’ => true,
        ‘rewrite’ => array( ‘slug’ => ‘content-types’ ),
    );
     
    register_taxonomy( ‘contenttype’, array( ‘post’ ), $args );
     
}
 
add_action( ‘init’, ‘tutsplus_taxonomies’ );

Теперь у вас будет дополнительная таксономия, отображаемая в администраторе для сообщений:

дополнительная таксономия появляется в админке

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

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
function tutsplus_taxonomies() {
    // Content type taxonomy
    $labels = array(
        ‘name’ => __( ‘Content Types’, ‘tutsplus’ ),
        ‘singular_name’ => __( ‘Content Type’, ‘tutsplus’ ),
        ‘search_items’ => __( ‘Search Content Types’, ‘tutsplus’ ),
        ‘all_items’ => __( ‘All Content Types’, ‘tutsplus’ ),
        ‘edit_item’ => __( ‘Edit Content Type’, ‘tutsplus’ ),
        ‘update_item’ => __( ‘Update Content Type’, ‘tutsplus’ ),
        ‘add_new_item’ => __( ‘Add New Content Type’, ‘tutsplus’ ),
        ‘new_item_name’ => __( ‘New Content Type Name’, ‘tutsplus’ ),
        ‘menu_name’ => __( ‘Content Types’, ‘tutsplus’ ),
    );
 
    $args = array(
        ‘hierarchical’ => true,
        ‘labels’ => $labels,
        ‘show_ui’ => true,
        ‘show_admin_column’ => true,
        ‘query_var’ => true,
        ‘rewrite’ => array( ‘slug’ => ‘content-types’ ),
    );
     
    register_taxonomy( ‘contenttype’, array( ‘post’ ), $args );
     
    // User topic taxonomy
    $labels = array(
        ‘name’ => __( ‘User Topics’, ‘tutsplus’ ),
        ‘singular_name’ => __( ‘User Topic’, ‘tutsplus’ ),
        ‘search_items’ => __( ‘Search User Topics’, ‘tutsplus’ ),
        ‘all_items’ => __( ‘All User Topics’, ‘tutsplus’ ),
        ‘edit_item’ => __( ‘Edit User Topic’, ‘tutsplus’ ),
        ‘update_item’ => __( ‘Update User Topic’, ‘tutsplus’ ),
        ‘add_new_item’ => __( ‘Add New User Topic’, ‘tutsplus’ ),
        ‘new_item_name’ => __( ‘New User Topic Name’, ‘tutsplus’ ),
        ‘menu_name’ => __( ‘User Topics’, ‘tutsplus’ ),
    );
 
    $args = array(
        ‘hierarchical’ => true,
        ‘labels’ => $labels,
        ‘show_ui’ => true,
        ‘show_admin_column’ => true,
        ‘query_var’ => true,
        ‘rewrite’ => array( ‘slug’ => ‘user-topics’ ),
    );
 
    register_taxonomy( ‘usertopic’, array( ‘post’ ), $args );
     
    // Developer topic taxonomy
    $labels = array(
        ‘name’ => __( ‘Developer Topics’, ‘tutsplus’ ),
        ‘singular_name’ => __( ‘Developer Topic’, ‘tutsplus’ ),
        ‘search_items’ => __( ‘Search Developer Topics’, ‘tutsplus’ ),
        ‘all_items’ => __( ‘All Developer Topics’, ‘tutsplus’ ),
        ‘edit_item’ => __( ‘Edit Developer Topic’, ‘tutsplus’ ),
        ‘update_item’ => __( ‘Update Developer Topic’, ‘tutsplus’ ),
        ‘add_new_item’ => __( ‘Add New Developer Topic’, ‘tutsplus’ ),
        ‘new_item_name’ => __( ‘New Developer Topic Name’, ‘tutsplus’ ),
        ‘menu_name’ => __( ‘Developer Topics’, ‘tutsplus’ ),
    );
 
    $args = array(
        ‘hierarchical’ => true,
        ‘labels’ => $labels,
        ‘show_ui’ => true,
        ‘show_admin_column’ => true,
        ‘query_var’ => true,
        ‘rewrite’ => array( ‘slug’ => ‘developer-topics’ ),
    );
 
    register_taxonomy( ‘developertopic’, array( ‘post’ ), $args );
 
}
 
add_action( ‘init’, ‘tutsplus_taxonomies’ );

Теперь у вас есть три таксономии для использования с постами:

три таксономии для использования с постами

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

То, как вы это делаете, немного нелогично, поскольку нет функции отмены регистрации таксономий. Вместо этого вы запускаете функцию register_taxonomy() без параметров, кроме имени таксономии.

Чтобы удалить категории, добавьте следующее в ваш файл functions.php :

1
2
3
4
5
6
function tutsplus_remove_taxonomies() {
 
    register_taxonomy( ‘category’, » );
     
}
add_action( ‘init’, ‘tutsplus_remove_taxonomies’, 0 );

При запуске этого через ловушку init , использование приоритета 0 гарантирует, что эта функция запускается после того, как основная функция WordPress установит категории в первую очередь.

Если вы также хотите удалить теги, просто добавьте следующее в tutsplus_rremove_taxonomies() :

1
register_taxonomy( ‘post_tag’, » );

Теперь вы увидите, что на панели инструментов доступны только теги и мои пользовательские таксономии:

Категории удалены на панели инструментов

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