Функция get_block_categories()
в WordPress используется для получения списка категорий блоков, которые будут отображаться в редакторе блоков. Она может принимать один аргумент: WP_Post
или WP_Block_Editor_Context
.
Описание функции
Функция get_block_categories()
возвращает массив категорий блоков для указанного поста или контекста. Эта функция полезна, когда вам нужно получить и, возможно, модифицировать список категорий блоков перед их отображением в редакторе.
Аргументы:
$post_or_block_editor_context
: (необязательно) ОбъектWP_Post
илиWP_Block_Editor_Context
, для которого нужно получить категории блоков. Если этот аргумент не указан, будут возвращены категории блоков по умолчанию.
Возвращаемое значение:
- Массив: Массив объектов, каждый из которых представляет собой категорию блоков. Каждый объект категории блоков имеет следующие свойства:
slug
: Строка. Уникальный идентификатор категории блоков.title
: Строка. Название категории блоков.icon
: Строка. HTML-код иконки категории блоков.
Пример использования:
// Получить список категорий блоков по умолчанию
$categories = get_block_categories();
// Пройтись по категориям блоков и вывести информацию о них
foreach ($categories as $category) {
echo $category->slug . ': ' . $category->title . ' (' . $category->icon . ')<br>';
}
Пример использования с WP_Post
:
// Получить пост
$post = get_post(123);
// Получить категории блоков для поста
$categories = get_block_categories($post);
// Пройтись по категориям блоков и вывести информацию о них
foreach ($categories as $category) {
echo $category->slug . ': ' . $category->title . ' (' . $category->icon . ')<br>';
}
Пример использования с WP_Block_Editor_Context
:
// Создать контекст редактора блоков
$context = new WP_Block_Editor_Context(array(
'post' => get_post(123),
));
// Получить категории блоков для контекста редактора блоков
$categories = get_block_categories($context);
// Пройтись по категориям блоков и вывести информацию о них
foreach ($categories as $category) {
echo $category->slug . ': ' . $category->title . ' (' . $category->icon . ')<br>';
}
Дополнительно:
- Функция
get_default_block_categories()
возвращает список категорий блоков по умолчанию. - Фильтр
block_categories
позволяет изменить список категорий блоков. - Хук
register_block_category
позволяет зарегистрировать новую категорию блоков.
Примеры использования get_block_categories
Получить список категорий блоков по умолчанию:
$categories = get_block_categories();
echo '<ul>';
foreach ($categories as $category) {
echo '<li>' . $category->title . '</li>';
}
echo '</ul>';
Получить список категорий блоков для определенного поста:
$post_id = 123;
$post = get_post($post_id);
$categories = get_block_categories($post);
echo '<ul>';
foreach ($categories as $category) {
echo '<li>' . $category->title . '</li>';
}
echo '</ul>';
Проверить, принадлежит ли блок определенной категории:
$block_name = 'core/image';
$category_slug = 'core/images';
$block_type = WP_Block_Type_Registry::get_instance()->get($block_name);
if ($block_type->category === $category_slug) {
echo 'Блок "' . $block_name . '" принадлежит категории "' . $category_slug . '".';
} else {
echo 'Блок "' . $block_name . '" не принадлежит категории "' . $category_slug . '".';
}
Расширенные возможности get_block_categories
Фильтрация категорий блоков
Функция get_block_categories()
позволяет фильтровать список возвращаемых категорий блоков.
add_filter('block_categories', function ($categories) {
// Удалить категорию "Core" из списка
unset($categories['core']);
// Добавить новую категорию "My Blocks"
$categories['my-blocks'] = array(
'slug' => 'my-blocks',
'title' => __('My Blocks', 'my-text-domain'),
'icon' => '<span class="dashicons dashicons-admin-generic"></span>',
);
return $categories;
});
В этом примере из списка категорий блоков удаляется категория «Core» и добавляется новая категория «My Blocks».
Регистрация пользовательских категорий блоков
Вы можете регистрировать свои собственные категории блоков, используя хук register_block_category
.
add_action('init', function () {
register_block_category(array(
'slug' => 'my-category',
'title' => __('My Category', 'my-text-domain'),
'icon' => '<span class="dashicons dashicons-admin-generic"></span>',
));
});
В этом примере регистрируется новая категория блоков «My Category».
Получение списка категорий блоков для определенного контекста
Функция get_block_categories()
может принимать объект WP_Block_Editor_Context
в качестве аргумента. Это позволяет получить список категорий блоков, доступных в контексте данного редактора блоков.
$context = new WP_Block_Editor_Context(array(
'post' => get_post(123),
));
$categories = get_block_categories($context);
echo '<ul>';
foreach ($categories as $category) {
echo '<li>' . $category->title . '</li>';
}
echo '</ul>';
В этом примере будет получен список категорий блоков, доступных для редактора блоков, связанного с постом с ID 123.
Заключение по get_block_categories
Функция get_block_categories()
является мощным инструментом для работы с категориями блоков в WordPress. Она позволяет получать информацию о категориях блоков, фильтровать их список, регистрировать новые категории и получать список категорий для определенного контекста.