Как визуализировать InnerBlocks в Гутенберге версии 4, используя контент php $ - PullRequest
0 голосов
/ 30 октября 2018

Это работало нормально с Гутенбергом 3:

function render_block($attrs, $content){
    ob_start();
        echo $content;
    return ob_get_clean();
}

Но с недавним обновлением Гутенберга, $content всегда равно нулю, даже если передать его из обратного вызова сохранения как:

    save: function(props) {
        return el( InnerBlocks.Content );
    },

Любая помощь очень ценится.

Ответы [ 2 ]

0 голосов
/ 11 апреля 2019

На самом деле это была ошибка в самом Гутенберге, и она была исправлена ​​в WP 5.1.1

Спасибо

0 голосов
/ 11 апреля 2019

block.js

(function (blocks, editor, components, i18n, element) {

    var el = element.createElement;

    blocks.registerBlockType('block-category/block-name', {

        ...

        edit: function(props) {

            el(editor.InnerBlocks, {
                allowedBlocks: ['core/heading'],
                template: [['core/heading', {'placeholder':'Placeholder text'}]],
            })

        },

        save: function(props) {

            return el(editor.InnerBlocks.Content);

        }

    });

})(
  window.wp.blocks,
  window.wp.editor,
  window.wp.components,
  window.wp.i18n,
  window.wp.element
);

block.php

add_action('init', function() {

    wp_register_script(
        'block_script',
        plugins_url('block.js', __FILE__),
        array('wp-blocks', 'wp-components', 'wp-element', 'wp-i18n', 'wp-editor'),
        filemtime(plugin_dir_path(__FILE__) . 'block.js'),
        true
    );

    'editor_script' => 'block_script',

    register_block_type('block-category/block-name', array(

        'render_callback' => function($attributes, $content) {

            return $content;

        }

    ));

});
...