Как я могу отключить панели инструментов для основных блоков? Это вообще возможно?

Я пытаюсь отключить панели инструментов для всех основных блоков, чтобы редакторы не форматировали содержимое без необходимости. Это вообще возможно?

Мой текущий подход:

wp.blocks.getBlockTypes().forEach((blockType) => {

    // unregister all default styles (from the right sidebar)

    let blockName = blockType.name;

    if ( blockType.hasOwnProperty('styles')) {
        blockType.styles.forEach( (style) => {
            wp.blocks.unregisterBlockStyle( blockName, style.name );
        });
    }     

});

Могу ли я как-то получить доступ к панелям инструментов в этом цикле? Правильно ли я понимаю, что я должен переопределить методы редактирования и сохранения основных блоков, возможно, с помощью фильтра?

Спасибо, Патрик

Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
2
0
611
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я только что решил проблему, но не так, как предполагалось. По сути, решение для меня состояло в том, чтобы отменить регистрацию необходимых основных блоков, внести изменения в методы редактирования и сохранения, а затем повторно зарегистрировать блоки.

Очень помогла эта статья в блоге Риада Бенгуэллы: https://riad.blog/2017/10/16/тысяча-и-один-путь-расширить-гутенберг-сегодня/

Вот пример на основе блока core/quote:

const TextControl = wp.components.TextControl;

import './style.scss';
import './editor.scss';

wp.domReady( () => {

    let unregisteredBlock = wp.blocks.unregisterBlockType('core/quote');

    unregisteredBlock.title = 'Quotation';
    unregisteredBlock.icon = 'format-quote';

    unregisteredBlock.edit = ({ attributes, setAttributes} ) => {    

        const updateFirstValue = ( val ) => {
            setAttributes({
                value: val
            });
        };
        const updateSecondValue = ( val ) => {
            setAttributes({
                citation: val
            });
        };

        return (
            <div>
                <TextControl
                    label='Quote'
                    value = { attributes.value }
                    onChange = { updateFirstValue }
                />
                <TextControl
                    label='Citation'
                    value = { attributes.citation }
                    onChange = { updateSecondValue }
                />
            </div>
        );

    };

    unregisteredBlock.save = ( { attributes, className } ) => {
        return (
            <blockquote className = {className}>
                <p>{attributes.value}</p>
                <cite>{attributes.citation}</cite>
            </blockquote>
        )
    };

    wp.blocks.registerBlockType('core/quote', unregisteredBlock);

});

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

Я надеюсь, что это может помочь кому-то, у кого такая же проблема.

Ваше здоровье, Патрик

Другие вопросы по теме