Изменение или добавление классов к отдельным компонентам в основных блоках WordPress - PullRequest
2 голосов
/ 22 мая 2019

У меня возникли трудности с изменением или добавлением дополнительных классов к отдельным компонентам блоков WordPress.По сути, я просто хочу добавить класс или классы к некоторым частям, которые составляют некоторые из основных блоков WordPress, для таких вещей, как добавление стиля начальной загрузки.

Примером этого может служить блок галереи изображений.Это работает достаточно хорошо для моих целей, но я могу захотеть сделать что-то вроде добавления класса img-Fluid или img-thumbnail к изображениям в этой галерее.

Я просмотрел документация для блочных фильтров, и я чувствую, что мой ответ будет где-то там, я просто не уверен, где еще.

Я пытался использовать блоки .Фильтр getBlockDefaultClassName , но это добавляет имя класса ко всему блоку, а не к отдельным частям, которые составляют этот блок (например, изображения в моем примере галереи).

Вот пример, который они приводят в документации:

 // Our filter function
function setBlockCustomClassName( className, blockName ) {
    return blockName === 'core/code' ?
        'my-plugin-code' :
        className;
}

// Adding the filter
wp.hooks.addFilter(
    'blocks.getBlockDefaultClassName',
    'my-plugin/set-block-custom-class-name',
    setBlockCustomClassName
);

Мне кажется, что blocks.getSaveContent.extraProps может делать то, что мне нужно,но я не уверен, как использовать это таким образом.Пример, который они используют, выглядит следующим образом:

function addBackgroundColorStyle( props ) {
    return lodash.assign( props, { style: { backgroundColor: 'red' } } );
}

wp.hooks.addFilter(
    'blocks.getSaveContent.extraProps',
    'my-plugin/add-background-color-style',
    addBackgroundColorStyle
);

Но даже если бы мне нужно было добавить дополнительное свойство, такое как имя класса, я бы подумал, что тогда мне нужно будет изменить действительные функции сохранения и редактирования (полагаю,использование большего количества блочных фильтров), чтобы затем использовать это имя класса, когда оно отображает эти фрагменты (в данном случае - изображения), и я также не уверен, как это сделать.

Буду признателен за любые мысли или предложения по этому поводу.

1 Ответ

0 голосов
/ 24 мая 2019

Существует два вида изменений: одно - структурное изменение, а другое - изменение стиля.В вашем сценарии вам нужно изменить стиль, но вы на самом деле ищете структурные изменения.Вы можете написать свой собственный CSS, который может обрабатывать стили вашего блока в представлении редактора и во внешнем интерфейсе.

Это те крючки, которые вам нужны для постановки в очередь ваших стилей enqueue_block_editor_assets (ставьте в очередь ваши стили только наредактор бэкэнда) и enqueue_block_assets (поставьте ваши стили в очередь как на бэкэнд, так и на внешний интерфейс).

...