如何迁移旧版小工具以阻止?

时间:2021-10-05 作者:shadi

我正在尝试将遗留小部件转换为块,我正在阅读文档,但我不知道将此javascript代码放在哪里:

transforms: {
from: [
    {
        type: \'block\',
        blocks: [ \'core/legacy-widget\' ],
        isMatch: ( { idBase, instance } ) => {
            if ( ! instance?.raw ) {
                // Can\'t transform if raw instance is not shown in REST API.
                return false;
            }
            return idBase === \'example_widget\';
        },
        transform: ( { instance } ) => {
            return createBlock( \'example/block\', {
                name: instance.raw.name,
            } );
        },
    },
]},
它说我应该将这个javascript添加到块的定义中。那是哪里?

wordpress文档:https://developer.wordpress.org/block-editor/how-to-guides/widgets/legacy-widget-block/

1 个回复
SO网友:Tom J Nowell

TLDR: If you wanted to update to v5.8 you don\'t need to do anything to make widgets work, they won\'t break if you update. There is no conversion step, no updating of code to make it work. migration is not necessary.

我正在尝试将遗留小部件转换为块,我正在阅读文档,但我不知道将此javascript代码放在哪里:

如果您决定移植WP_Widget 小部件,以便它们可以在小部件区域之外使用,那么这就是允许您将旧小部件转换为您创建的新块的机制。因此,当您注册它时,它会进入new blocks transform部分。

如果没有新的替换块,则无需更改即可继续将小部件用作小部件。任何更新到5.8并打开新窗口小部件UI的人都会看到他们的窗口小部件仍然存在,并且可以添加和更改。这是因为核心开发人员添加了一个兼容性层,以便小部件显示为遗留小部件块。

如果您确实决定创建一个替换,可能是因为您计划使用完整的站点编辑或希望将其嵌入帖子中,以下是一些提示:

使用服务器渲染块,以便可以直接移植小部件渲染代码。您的小部件选项应直接移植到块属性。您需要一个编辑组件来替换小部件表单,这可能需要一些javascript。编辑组件是编辑器显示的内容null 或者根本不指定保存组件。块编辑器将假定您计划对其使用PHP有一个服务器渲染组件,将块类型和属性传递给它,它将调用服务器并运行块PHP,以便您可以在编辑器中显示/预览它

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'