- Вопрос или проблема
- Ответ или решение
- 1. Основное понимание Gutenberg и его возможностей
- 2. Создание пользовательского шаблона страницы
- Шаг 1: Создайте файл шаблона
- Шаг 2: Добавьте комментарии шаблона
- Шаг 3: Зарегистрируйте шаблон в редакторе
- 3. Создание пользовательских блоков
- Шаг 1: Регистрация блоков
- Шаг 2: Создание пользовательского блока в редакторе
- 4. Стиль для отличия секций
- Заключение
Вопрос или проблема
Я прочитал несколько вопросов/ответов/статей о «кастомных шаблонах», включая Руководство по блочному редактору, но ничего не нашел, что мне нужно. Да, это похоже на вопросы о размещении контента из двух разных редакторов на одной странице, что, как я понимаю, невозможно (см. комментарий ACF ниже).
Пример того, что я ищу: после загрузки шаблона пользователь увидит две области (секции/дива) в редакторе, с фоновым цветом для их различия. Если пользователь добавит абзац в первой секции (A), этот контент отобразится в секции A на публичной веб-странице. То же самое и со второй секцией.
- Есть ли способ иметь какой-то подлежащий HTML в редакторе для создания структуры?
- Можно ли сделать это без использования ACF (меня всегда удивляет, что такая уважаемая CMS не может записывать контент в разных местах на странице).
Спасибо.
Похоже, вы немного знакомы с WordPress. Ничего страшного.
Да, это правда, что у него нет мест для редактирования фронтэнд сегментов или блоков. Это происходит потому, что вы должны создавать их на бэкенде.
Мы можем использовать ACF, чтобы быстро создать метабоксы на бэкенде. Если хотите сделать это вручную, можете проверить руководство об этом.
Для простоты давайте ответим на ваш вопрос:
- перейдите к редактированию страницы/поста.
- щелкните на значок шестеренки, чтобы открыть боковую панель, затем выберите «кодовый редактор» из меню.
Это предоставит вам HTML редактор. Вы можете просто написать весь свой HTML код здесь.
Чтобы создать шаблон страницы: - создайте файл на сервере > в директории вашей темы
- Добавьте комментарий шаблона страницы внутрь этого файла.
- Проверьте на боковой панели административной зоны в редакторе страниц. Теперь вы сможете найти выпадающий список с вашим шаблоном страницы.
Также в нем имеется встроенный виджет HTML редактора, который можно добавить в блоковый редактор.
Ответ на оба вопроса: Да.
https://developer.wordpress.org/reference/functions/register_block_type/
Самый простой способ — иметь серверный рендер-скрипт для блока. render.php
блока будет содержать ваш HTML так, как вам нравится. Как зарегистрировать блок в административной области JS, я укажу вам здесь: https://wordpress.stackexchange.com/a/423991/45050
Этот подход, однако, не редактирует в самом редакторе, а в боковой панели с формой, содержащей текстовые поля.
Если ваша цель — редактировать в самом редакторе, вам придется сделать что-то подобное тому, что делает блок колонок — у вас будет:
- внутренний блок, который будет поддерживать другие внутренние блоки (абзацы или больше)
- оберточный блок, который будет поддерживать добавление этого внутреннего блока (несколько раз)
Вы будете работать с <InnerBlocks />
/ window.wp.blockEditor.InnerBlocks
, если вы не строите на React…
Другой способ — добавить класс к блоку колонок (который по умолчанию имеет колонки) и стилизовать его по-другому на фронтенде.
Ответ или решение
Создание пользовательского шаблона страницы для редактора Gutenberg
Если вы хотите создать пользовательский шаблон страницы в редакторе Gutenberg WordPress, чтобы предоставлять пользователям возможность добавлять контент в разные секции страницы, следует учитывать несколько важных аспектов.
1. Основное понимание Gutenberg и его возможностей
Редактор Gutenberg представляет собой блочный редактор, в котором каждый элемент контента представлен в виде блока. Это позволяет создавать разнообразные макеты, однако в отличие от традиционного редактора, Gutenberg не поддерживает редактирование HTML-структуры непосредственно с экрана. Тем не менее, вы можете создать пользовательские шаблоны, которые позволят вам управлять отображением разных секций на странице.
2. Создание пользовательского шаблона страницы
Шаг 1: Создайте файл шаблона
- Перейдите в директорию вашей темы (
wp-content/themes/ваша_тема
). - Создайте новый PHP-файл, например
template-custom-blocks.php
.
Шаг 2: Добавьте комментарии шаблона
В начале файла добавьте следующий код, который определяет файл как шаблон:
<?php
/**
* Template Name: Пользовательский шаблон с блоками
*/
get_header(); ?>
<div class="custom-section-a">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; endif; ?>
</div>
<div class="custom-section-b">
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<?php the_content(); ?>
<?php endwhile; endif; ?>
</div>
<?php get_footer(); ?>
Шаг 3: Зарегистрируйте шаблон в редакторе
После создания файла вы сможете выбрать ваш шаблон из выпадающего меню на странице редактирования в админ-панели WordPress. Это позволит вам использовать этот шаблон для определённых страниц.
3. Создание пользовательских блоков
Чтобы предложить пользователям возможность редактирования двух секций из редактора Gutenberg, следует создать пользовательские блоки.
Шаг 1: Регистрация блоков
Вы можете создать пользовательские блоки с помощью функции register_block_type
. Используйте следующий код в вашем functions.php
файле:
function custom_block_init() {
register_block_type('custom/section-a', array(
'render_callback' => 'render_custom_section_a',
));
register_block_type('custom/section-b', array(
'render_callback' => 'render_custom_section_b',
));
}
add_action('init', 'custom_block_init');
function render_custom_section_a($attributes) {
return '<div class="section-a">' . esc_html($attributes['content']) . '</div>';
}
function render_custom_section_b($attributes) {
return '<div class="section-b">' . esc_html($attributes['content']) . '</div>';
}
Шаг 2: Создание пользовательского блока в редакторе
Чтобы создать блок, используйте InnerBlocks
, как это сделано в колонках:
const { InnerBlocks } = wp.blockEditor;
const MyCustomBlock = (props) => {
return (
<div className="my-custom-block">
<InnerBlocks />
</div>
);
};
wp.blocks.registerBlockType('custom/my-custom-block', {
edit: MyCustomBlock,
save: () => {
return <InnerBlocks.Content />;
}
});
4. Стиль для отличия секций
Для того чтобы визуально отличать секции, добавьте CSS-стили:
.custom-section-a {
background-color: #f0f0f0; /* Сравнительно светлый цвет для секции A */
padding: 20px;
}
.custom-section-b {
background-color: #d1e7dd; /* Более темный цвет для секции B */
padding: 20px;
}
Заключение
Создание пользовательского шаблона и кастомных блоков в редакторе Gutenberg позволяет вам гибко управлять контентом на страницах вашего сайта. Следуя данным шагам, вы сможете разработать шаблон, который обеспечит уникальную структуру контента, соответствующую вашим требованиям.