Изменить тип блока в шаблоне InnerBlocks без потери содержимого - PullRequest
0 голосов
/ 21 февраля 2019

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

Есть ли способ сделать это?

По аналогии, если бы в блоке основных столбцов имелись подблоки «столбец-третий» и «столбец-половина», был бы способ перехода с двух «столбец-половина» на три столбца.третьи без потери данных?

Чтобы расширить эту аналогию, предположим, что я сделал клоны блоков колонок и колонок , и я модифицируюстолбцы блокируются следующим образом:

Функция генерации шаблона:

var childBlockName = 'core/column';
const getColumnsTemplate = memoize( ( columns ) => {
    return times( columns, () => [ childBlockName ] );
} );

и RangeControl в функции редактирования:

<RangeControl
    label={ __( 'Columns' ) }
    value={ columns }
    onChange={ ( nextColumns ) => {
        childBlockName = 'coreclone/column';
        setAttributes( {
            columns: nextColumns,
        } );
    } }
    min={ 2 }
    max={ 6 }
/>

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

...