REGISTER_BLOCK_TYPE和wp.BLOCKS之间的差异

时间:2020-09-16 作者:Simon Lac

我正在创建一个插件,该插件将向Gutenberg添加自定义块。我已经使用WordPress的JavaScript函数注册并构建了我的所有块wp.blocks.registerBlockType(). 它的工作原理和我预期的一样,但最近我发现WordPress还有一个PHP函数,名为register_block_type().

文件上说register_block_type() "E;注册块类型;。。它使用WP_Block_Type_Registry 但是我真的不明白这门课做什么。

任何人都可以帮我理解register_block_type() 确实如此,有什么区别wp.blocks.registerBlockType()?

谢谢你的帮助!

1 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

文档中说register\\u block\\u type();注册块类型;。。

是的,它也做同样的工作,但使用PHP而不是javascript。

register_block_type 也可用于加载JS块。您可以注册一个块并声明要加载的CSS/JS/etc文件。

例如,请参见官方文档页面评论中发布的以下代码片段:

    register_block_type( \'mcqac/related-quiz\', array(
        \'editor_script\' => \'mcqac-related-quiz-block-script\',
        \'editor_style\'  => \'mcqac-related-quiz-block-editor-style\',
        \'style\'         => \'mcqac-related-quiz-block-frontend-style\',
    ) );
或者,您可以提供一个渲染回调,并在PHP中渲染块服务器端。

它使用WP\\u Block\\u Type\\u注册表类,但我真的不知道该类做什么。

不完全是,它使用WP_Block_Type. 它必须将数据存储在某个地方,而不是将其存储为没有定义的数组,而是将其存储为结构化对象。

此对象提供了一些用于处理该类型块的助手方法,以及用于在传入给定属性时渲染该类型块的助手方法。尽管这只适用于动态PHP渲染块。

WP_Block_Type_Registry 只是包含所有块类型的对象的类类型。JS中也存在类似的结构。

WordPress中的每个主要对象类型都有类似的类类型,例如。WP_Term WP_Theme, 或WP_Post_Type. 与WordPress中的大多数类一样,问题不在于它们做什么,而在于它们是/包含什么。您将处理的大多数WP核心对象都是某种形式的数据容器,其中包含一些辅助方法,或者是查询对象,例如WP_Query.

任何人都可以帮助我了解register\\u block\\u type()的确切功能以及与wp的区别。块。registerBlockType()?

一个是PHP,另一个是JS,它们的目的是做同样的事情,注册一个块。只是有时候您需要在服务器端呈现东西,所以需要一种在PHP中注册东西的方法。

相关推荐

使用PHP编写WordPress AJAX表单以检查用户是否已注销并显示错误

我有一个WordPress前端表单,它使用AJAX保存数据。表单是在后端处理的,显然是使用PHP post,我做了一个简单的解决方案,如果表单无法提交,就向用户通知表单提交错误。但我的表单是针对已登录用户的,如果WordPress用户已注销,我希望我的表单显示错误消息。<form action="https://milyin.com/my/" method="post" name="milyin-add-edit" id="Add