我最近利用 @wordpress/create-block 包开发了一个自定义古腾堡块,它有效地生成了一个完整的插件框架。我只需要调整一些现有文件即可使核心功能正常工作。
此块是英雄/视觉类型,用户可以在其中选择图像并为每张幻灯片添加标题。该块在前端正确显示,显示所有选定的图像和标题。
我当前的任务是实现 JavaScript 以启用轮播功能。但是,我遇到了一个问题,即我的 viewScript(指定为“file:./view.js”)未在前端加载。不加载是指该脚本不会出现在 HTML 标记或网络选项卡中。
这是位于构建文件夹中的 block.json 的内容:
{
"$schema": "https://schemas.wp.org/trunk/block.json",
"apiVersion": 3,
"name": "custom-block/hero",
"version": "0.1.0",
"title": "Hero",
"category": "widgets",
"icon": "smiley",
"description": "Custom hero block",
"attributes": {
"images": {
"type": "array",
"source": "query",
"default": [],
"selector": "img",
"query": {
"url": {
"type": "string",
"source": "attribute",
"attribute": "src"
},
"alt": {
"type": "string",
"source": "attribute",
"attribute": "alt"
},
"caption": {
"type": "string",
"source": "attribute",
"attribute": "data-caption"
}
}
}
},
"supports": {
"html": false
},
"textdomain": "hero",
"editorScript": "file:./index.js",
"editorStyle": "file:./index.css",
"style": "file:./style-index.css",
"viewScript": "file:./view.js",
"viewStyle": "file:./view.css"
}
您可以在我的插件的构建文件夹中验证 view.js 是否存在就在实际存储库中。
插件的主文件 Hero.php 没有使用 render_callback 函数,因此我认为不需要手动脚本排队。它看起来是这样的:
/**
* Plugin Name: Hero
* Description: Custom hero block.
* Requires at least: 6.1
* Requires PHP: 7.0
* Version: 0.1.0
* Author: Daniel
* License: GPL-2.0-or-later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* Text Domain: hero
*
* @package CreateBlock
*/
if ( ! defined( 'ABSPATH' ) ) {
exit; // Exit if accessed directly.
}
function create_block_hero_block_init() {
register_block_type( __DIR__ . '/build' );
}
add_action( 'init', 'create_block_hero_block_init' );
尽管正确添加了块并保存了页面,view.js 脚本在前端仍然未被检测到。我在互联网上搜索了解决方案,但它似乎对其他人有用。我会错过重要的一步吗?
提前感谢您的指导。
问题解决了。如果有人遇到与我相同的问题,请进入您尝试渲染块的 *.php 文件。确保您使用
the_content()
来呈现页面内容,而不是 get_the_content()
。