В предыдущем разделе блок применял свои собственные стили с помощью встроенного style
атрибута. Хотя это может быть достаточно для очень простых компонентов, вы быстро обнаружите, что вам легче писать свои стили, извлекая их в отдельный файл таблицы стилей.
Редактор автоматически сгенерирует имя класса для каждого типа блока, чтобы упростить стилизацию. Доступ к нему можно получить из аргумента объекта, переданного в функции редактирования и сохранения:ES5ESNext
var el = wp.element.createElement,
registerBlockType = wp.blocks.registerBlockType;
registerBlockType( 'gutenberg-boilerplate-es5/hello-world-step-02', {
title: 'Hello World (Step 2)',
icon: 'universal-access-alt',
category: 'layout',
edit: function( props ) {
return el( 'p', { className: props.className }, 'Hello editor.' );
},
save: function() {
return el( 'p', {}, 'Hello saved content.' );
}
} );
Имя класса генерируется с использованием имени блока с префиксом wp-block-
, заменяя /
разделитель пространства имен одним -
.
.wp-block-gutenberg-boilerplate-es5-hello-world-step-02 {
color: green;
background: #cfc;
border: 2px solid #9c9;
padding: 20px;
}
Постановка в очередь только для редактора блочных активов
Как и скрипты, стили вашего блока, связанные с редактором, следует ставить в очередь, назначая editor_styles
настройку зарегистрированного типа блока:
<?php
function gutenberg_boilerplate_block() {
wp_register_script(
'gutenberg-boilerplate-es5-step02-editor',
plugins_url( 'step-02/block.js', __FILE__ ),
array( 'wp-blocks', 'wp-element' )
);
wp_register_style(
'gutenberg-boilerplate-es5-step02-editor',
plugins_url( 'step-02/editor.css', __FILE__ ),
array( 'wp-edit-blocks' ),
filemtime( plugin_dir_path( __FILE__ ) . 'step-02/editor.css' )
);
register_block_type( 'gutenberg-boilerplate-esnext/hello-world-step-02', array(
'editor_script' => 'gutenberg-boilerplate-es5-step02-editor',
'editor_style' => 'gutenberg-boilerplate-es5-step02-editor',
) );
}
add_action( 'init', 'gutenberg_boilerplate_block' );
Постановка в очередь редактора и интерфейсных активов
В то время как скрипты блока обычно необходимы только для загрузки в редакторе, вам нужно будет загружать стили как в передней части сайта, так и в редакторе. Вы можете даже хотеть отличные стили в каждом контексте.
При регистрации блока вы можете назначить один или оба style
и editor_style
соответственно назначить стили, всегда загруженные для блока, или стили, загруженные только в редакторе.
<?php
function gutenberg_boilerplate_block() {
wp_register_style(
'gutenberg-boilerplate-es5-step02',
plugins_url( 'step-02/style.css', __FILE__ ),
array(),
filemtime( plugin_dir_path( __FILE__ ) . 'step-02/style.css' )
);
register_block_type( 'gutenberg-boilerplate-esnext/hello-world-step-02', array(
'style' => 'gutenberg-boilerplate-es5-step02',
) );
}
add_action( 'init', 'gutenberg_boilerplate_block' );
Поскольку ваш блок может использовать одни и те же стили в обоих контекстах, вы можете рассматривать его style.css
как базовую таблицу стилей, в которую помещаются стили, специфичные для редактора editor.css
.