Данная статья будет всецело посвящена новому редактору WP — Gutenberg.
По скорости обновления записи этот редактор сделал огромный скачок по сравнению с классическим.
Принудительное включение в WC
По умолчанию Guttenberg для Woocommerce отключен, чтобы включить его — нужно использовать эту функцию:
// Активировать Gutenberg для Woocommerce
function wplook_activate_gutenberg_products($can_edit, $post_type){
if($post_type == 'product'){
$can_edit = true;
}
return $can_edit;
}
add_filter('use_block_editor_for_post_type', 'wplook_activate_gutenberg_products', 10, 2);
Отключить Guttenberg
// disable for posts
add_filter('use_block_editor_for_post', '__return_false', 10);
// disable for post types
add_filter('use_block_editor_for_post_type', '__return_false', 10);
Отключить ненужные блоки
Нужно прописывать в js-файле (my-plugin.js):
wp.domReady( function() {
wp.blocks.unregisterBlockType( 'core/verse' );
} );
И подключить данный скрипт определенным образом:
function my_plugin_blacklist_blocks() {
wp_enqueue_script(
'my-plugin-blacklist-blocks',
plugins_url( 'my-plugin.js', __FILE__ ),
array( 'wp-blocks', 'wp-dom-ready', 'wp-edit-post' )
);
}
add_action( 'enqueue_block_editor_assets', 'my_plugin_blacklist_blocks' );
Можно также наоборот указать список блоков которые должны быть доступны, остальные отключаться:
wp.domReady( function() {
var allowedBlocks = [
'core/paragraph',
'core/image',
'core/html',
'core/freeform'
];
wp.blocks.getBlockTypes().forEach( function( blockType ) {
if ( allowedBlocks.indexOf( blockType.name ) === -1 ) {
wp.blocks.unregisterBlockType( blockType.name );
}
} );
} );
Решение по данному вопросу (от rudrastyh.com) через функцию php. Данный способ более прост и предпочтителен, т.к. изначально не выводит ненужные блоки, а не скрывает их скриптом. Делаем список разрешенных блоков:
add_filter( 'allowed_block_types', 'misha_allowed_block_types' );
function misha_allowed_block_types( $allowed_blocks ) {
return array(
'core/image',
'core/paragraph',
'core/heading',
'core/list'
);
}
Список блоков Gutenberg
Block Type | Описание |
---|---|
Paragraph | Абзац текста |
List | Список (нумерованный/ненумерованный) |
Image | Изображение |
Heading | Заголовок (h2, h3, h4, h5, 56) |
Quote | Цитата |
Cover | Изображение или видео с наложением текста — отлично подходит для заголовков |
Gallery | Галерея изображений |
Audio | Аудио файлы |
File | Ссылка на файл |
Video | Видео файлы |
Classic | Блок с классическим редактором |
Pullquote | Give special visual emphasis to a quote from your text |
Table | Таблица |
Verse | Вставка стихотворения. Используйте специальные форматы интервалов |
Code | Демонстрация кода |
Custom HTML | HTML код |
Preformatted | Текст, который учитывает интервалы и вкладки, а также позволяет стилизацию |
Columns | Блок, который отображает контент в нескольких столбцах |
Button | Prompt visitors to take action with a custom button. |
Media & Text | Установка мультимедиа с подписью |
More | Обрезать часть текста |
Page Break | Разделитель текста на следующую страницу |
Separator | Горизонтальный разделитель |
Spacer | Пробел между блоками. Можно настроить высоту |
Shortcode | Блок для вставки шорткодов |
Archives | Вывод архивов постов по датам |
Categories | Вывод категорий |
Latest Comments | Последние комментарии |
Latest Posts | Последние записи |
Embed | Встраивание видео, изображений, твитов, аудио и другого контента из внешних источников |
Переместить стили в подвал
Перемещаем стили Gutenberg из шапки в подвал:
add_action( 'wp_print_styles', 'wps_deregister_styles', 100 );
function wps_deregister_styles() { wp_dequeue_style( 'wp-block-library' ); }
Скроем вовсе стили во всех шаблонах кроме записей (post, page и т.д.):
// Proper connection jquery library
function my_scripts_method() {
if( !is_singular() ) { wp_deregister_style( 'wp-block-library' ); }
}
add_action( 'wp_enqueue_scripts', 'my_scripts_method', 1 );
Обязательное заполнение полей
В классическом редакторе было просто сделать поля для заполнения, для этого достаточно в полях указывать атрибут required. Но за счет того что Gutenberg на ajax этот способ не действует.
Сделать обязательным выбор категорий и/или меток может плагин Required taxonomies (1000). Всего 3 настройки: к каким типам записей применять, какая таксономия обязательна, текст всплывающего сообщения если таксономия не выбрана.
Ошибки при работе с Gutenberg
В странице не отображается опция Родительская страница
Не обновляется страница
После очистки cookies данная проблема ушла.
Ответ не является допустимым ответом JSON
Проявляется в работе блоков Woocommerce.
Не редактируется визуальная часть поля WYSIWYG

Решается строчкой в wp_config.php
define('CONCATENATE_SCRIPTS', false);
[site-socialshare]