В WordPress типы записей (post types) используются для создания различных типов контента. По умолчанию WordPress предоставляет типы записей «post» (запись) и «page» (страница). Мы создадим новый тип записей «База знаний» для хранения записей базы знаний.
Вот подробные шаги для регистрации нового типа записей «База знаний»:
- Откройте файл
admin-knowledge-base.php
в корневой папке плагина.
- Добавьте следующий код для регистрации типа записей:
function akb_register_post_type() {
$labels = array(
'name' => esc_html__( 'Knowledge Base', 'admin-knowledge-base' ),
'singular_name' => esc_html__( 'Knowledge Base Entry', 'admin-knowledge-base' ),
'menu_name' => esc_html__( 'Knowledge Base', 'admin-knowledge-base' ),
'name_admin_bar' => esc_html__( 'Knowledge Base Entry', 'admin-knowledge-base' ),
'add_new' => esc_html__( 'Add New', 'admin-knowledge-base' ),
'add_new_item' => esc_html__( 'Add New Entry', 'admin-knowledge-base' ),
'new_item' => esc_html__( 'New Entry', 'admin-knowledge-base' ),
'edit_item' => esc_html__( 'Edit Entry', 'admin-knowledge-base' ),
'view_item' => esc_html__( 'View Entry', 'admin-knowledge-base' ),
'all_items' => esc_html__( 'All Entries', 'admin-knowledge-base' ),
'search_items' => esc_html__( 'Search Entries', 'admin-knowledge-base' ),
'parent_item_colon' => esc_html__( 'Parent Entry:', 'admin-knowledge-base' ),
'not_found' => esc_html__( 'No entries found.', 'admin-knowledge-base' ),
'not_found_in_trash' => esc_html__( 'No entries found in Trash.', 'admin-knowledge-base' )
);
$args = array(
'labels' => $labels,
'description' => esc_html__( 'Knowledge Base entries for administrators', 'admin-knowledge-base' ),
'public' => false,
'publicly_queryable' => false,
'show_ui' => true,
'show_in_menu' => true,
'query_var' => true,
'rewrite' => array( 'slug' => 'knowledge-base' ),
'capability_type' => 'post',
'has_archive' => false,
'hierarchical' => false,
'menu_position' => null,
'supports' => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'comments' )
);
register_post_type( 'knowledge_base', $args );
}
add_action( 'init', 'akb_register_post_type' );
- Давайте разберем основные части этого кода:
$labels
: Массив с метками для различных элементов интерфейса, связанных с типом записей. Он определяет названия и текст, которые будут отображаться в админ-панели WordPress.
$args
: Массив с аргументами для регистрации типа записей. Он определяет различные настройки и параметры типа записей.
public
и publicly_queryable
установлены в false
, чтобы записи не были доступны на фронтенде сайта.
show_ui
и show_in_menu
установлены в true
, чтобы тип записей отображался в админ-панели WordPress.
capability_type
установлен в 'post'
, чтобы использовать стандартные возможности записей WordPress.
supports
определяет поддерживаемые функции для типа записей, такие как заголовок, редактор, автор, миниатюра и т.д.
register_post_type()
: Функция WordPress для регистрации нового типа записей. Она принимает два аргумента: название типа записей ('knowledge_base'
) и массив аргументов ($args
).
add_action()
: Функция WordPress для добавления действия. Мы привязываем функцию akb_register_post_type()
к хуку 'init'
, чтобы она выполнялась при инициализации WordPress.
- Сохраните файл
admin-knowledge-base.php
.
Теперь у нас есть зарегистрированный тип записей «База знаний». Он будет доступен в админ-панели WordPress, и администраторы смогут создавать, редактировать и удалять записи базы знаний.
Основные изменения в коде:
- Все переводимые строки теперь обернуты функцией
esc_html__()
вместо __()
. Функция esc_html__()
выполняет перевод строки и затем применяет защитный эскейп с помощью esc_html()
для предотвращения XSS-атак.
- Текстовый домен плагина
'admin-knowledge-base'
передается вторым аргументом в функцию esc_html__()
. Это позволяет переводить строки плагина отдельно от других строк в WordPress.
- Все строки теперь на английском языке, что является хорошей практикой для многоязычных плагинов. Переводы будут выполняться с помощью файлов перевода (.po и .mo файлы), которые мы создадим позже.
Чтобы полностью поддерживать многоязычность в плагине, нам нужно будет выполнить следующие шаги:
- Загрузить все переводимые строки в плагине с помощью функций
esc_html__()
, __()
, esc_html_e()
, _e()
и т.д.
- Сгенерировать файл шаблона перевода (.pot) с помощью инструментов, таких как WP-CLI или Poedit.
- Создать файлы перевода (.po и .mo) для каждого языка, который мы хотим поддерживать, используя файл шаблона перевода.
- Загрузить файлы перевода в соответствующую директорию плагина (обычно
languages/
).
- Загрузить текстовый домен плагина с помощью функции
load_plugin_textdomain()
в файле плагина.
Эти шаги обеспечат полную поддержку многоязычности в нашем плагине «База знаний для администраторов». WordPress будет автоматически загружать соответствующие переводы в зависимости от языка сайта.
Давайте продолжим разработку плагина и реализуем остальные шаги, чтобы создать полнофункциональный многоязычный плагин базы знаний!
Следующим шагом будет создание пользовательского интерфейса для управления записями базы знаний и реализация функциональности создания, редактирования и удаления записей.