此bounty已结束。回答此问题可获得+50声望奖励。赏金宽限期20小时后结束。raju_odi正在寻找规范答案:请给予一个明确的解决方案。
我正试图添加额外的切换按钮,核心 gutenberg 块和所有的工作正常,除了小部件块,特别是rss块。
- 添加了一个按钮
- 在按钮上单击添加新属性
- 该属性未保存且块崩溃
以下是渲染API路径:
domain.com/wp-json/wp/v2/block-renderer/core/rss?context=edit&attributes%5Bcolumns%5D=2&attributes%5BblockLayout%5D=list&attributes%5BfeedURL%5D=https%3A%2F%domain.com%2Fblog%2F&attributes%5BitemsToShow%5D=5&attributes%5BdisplayExcerpt%5D=false&attributes%5BdisplayAuthor%5D=false&attributes%5BdisplayDate%5D=false&attributes%5BexcerptLength%5D=55&attributes%5Bdatatext%5D=el1683204085047&post_id=2&_locale=user
它显示400 Bad request,如果您检查Rest API URL,则有datatext属性,这是我试图添加的自定义属性。
错误:react.js?ver=18.2.0:1120未捕获错误:对象作为React子对象无效(找到:带键{error,errorMsg}的对象)。如果你想呈现一个子元素的集合,请使用数组。
请建议我最好的方法来添加额外的属性到核心/RSS WordPress块。
1条答案
按热度按时间e5nqia271#
我在
core/rss
块上复制了WP 6.2中的错误。通过过滤器blocks.registerBlockType
使用新属性扩展块,然后编辑,然后保存,直到添加feedURL
。由于RSS块使用服务器端渲染,我查看了render_callback代码,因为ServerSideRender错误读取:添加
feedURL
后的Error loading block: Invalid parameter(s): attributes
,例如:无错误
错误
已更新答案
在进一步的测试中,我确认在JavaScript中使用
addFilter('blocks.registerBlockType', ...);
直接导致了Invalid parameter(s)
错误。当PHP在前端呈现动态块时,块验证失败,因为
block.json
属性与标记中保存的属性不匹配。**解决方案:**使用PHP中的
register_block_type_args
过滤器覆盖block默认值render_callback
,同时注册一个额外的参数。不要将JavaScriptaddFilter('blocks.registerBlockType', ...);
用于动态块。PHP
参考:
core/rss
渲染回调函数。JavaScript