目录
1. 使用 register_block_type 正确指定资产路径
2. 在 functions.php 或插件中注册脚本和样式表
3. 构建工具配置注意事项
4. 加载前端样式的小技巧
首页 CMS教程 &#&按 如何争取古腾堡大块的资产

如何争取古腾堡大块的资产

Jul 09, 2025 am 12:14 AM
assets

在开发 Gutenberg 块时,正确 enqueue 资产的方法包括:1. 使用 register_block_type 指定 editor_script、editor_style 和 style 的路径;2. 在 functions.php 或插件中通过 wp_register_script 和 wp_register_style 注册资源,并设置正确的依赖和版本;3. 配置构建工具输出合适的模块格式,并确保路径一致;4. 通过 add_theme_support 或 enqueue_block_assets 控制前端样式的加载逻辑,确保样式生效且避免冲突。

在开发 Gutenberg 块时,正确地 enqueue 资产(比如 JavaScript 和 CSS 文件)是确保块正常运行的关键步骤。这不仅仅是把文件加载到后台编辑器中,还要考虑前端展示和依赖管理的问题。


1. 使用 register_block_type 正确指定资产路径

WordPress 提供了 register_block_type 函数来注册一个区块类型,并允许你通过参数指定对应的 JS 和 CSS 文件路径。

register_block_type( __DIR__, array(
    'editor_script' => 'my-block-editor-script',
    'editor_style'  => 'my-block-editor-styles',
    'style'         => 'my-block-frontend-styles',
) );
  • editor_script:用于区块编辑器中的脚本(通常是编译后的 .js.jsx 文件)
  • editor_style:仅在编辑器中加载的样式,不影响前台
  • style:前后台都会加载的样式,通常用于区块的基本外观统一

2. 在 functions.php 或插件中注册脚本和样式表

你需要先用 wp_register_scriptwp_register_style 注册这些资源,这样 WordPress 才能识别你在 register_block_type 中提到的 handle。

function my_block_assets() {
    wp_register_script(
        'my-block-editor-script',
        get_template_directory_uri() . '/blocks/my-block/build/index.js',
        array( 'wp-blocks', 'wp-element', 'wp-editor' ),
        filemtime( get_template_directory() . '/blocks/my-block/build/index.js' )
    );

    wp_register_style(
        'my-block-editor-styles',
        get_template_directory_uri() . '/blocks/my-block/editor.css',
        array(),
        filemtime( get_template_directory() . '/blocks/my-block/editor.css' )
    );

    wp_register_style(
        'my-block-frontend-styles',
        get_template_directory_uri() . '/blocks/my-block/style.css',
        array(),
        filemtime( get_template_directory() . '/blocks/my-block/style.css' )
    );
}
add_action( 'init', 'my_block_assets' );

注意几个关键点:

  • 脚本依赖要写全,比如 wp-blocks, wp-element, wp-editor
  • 使用 filemtime() 可以避免浏览器缓存旧版本文件
  • 如果你使用的是主题目录结构,建议用 get_template_directory;如果是插件,则用 plugins_url() 配合 __FILE__

3. 构建工具配置注意事项

如果你用 Webpack、Vite 或其他构建工具打包区块代码,需要注意以下几点:

  • 输出的 JS 文件应该是一个 UMD 模块,或者被正确打包为适合 WordPress 环境的格式
  • 不要把 React、ReactDOM 单独打包进你的脚本,而是通过 WordPress 提供的全局变量引用(如 window.React, window.ReactDOM
  • 确保输出路径与 PHP 中注册的路径一致

常见做法:

  • 把编辑器脚本放在 /src/blocks/your-block/index.js
  • 用 Webpack 编译到 /build/your-block/index.js
  • 同时生成 .asset.php 文件来自动获取依赖项和版本号(WordPress 默认支持)

4. 加载前端样式的小技巧

默认情况下,Gutenberg 区块的 style 参数会在前台自动加载样式。但有时候你会发现样式没生效,原因可能是:

  • 主题没有正确启用区块样式支持(检查是否调用了 add_theme_support( 'wp-block-styles' )
  • 样式被其他主题样式覆盖,建议加一些命名空间类名
  • 有些区块不会在前端渲染(比如某些动态区块),这时候可以考虑用 enqueue_block_assets 钩子按需加载
function my_enqueue_frontend_assets() {
    if ( has_block( 'my/block-name' ) ) {
        wp_enqueue_style( 'my-block-frontend-styles' );
    }
}
add_action( 'wp_enqueue_scripts', 'my_enqueue_frontend_assets' );

这种方式更灵活,但也需要判断区块是否实际存在页面上。


基本上就这些。只要按照 WordPress 的区块注册规范走,再注意构建和路径问题,就能顺利把资产加载进区块里了。

以上是如何争取古腾堡大块的资产的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

Rimworld Odyssey温度指南和Gravtech
1 个月前 By Jack chen
Rimworld Odyssey如何钓鱼
1 个月前 By Jack chen
我可以有两个支付帐户吗?
1 个月前 By 下次还敢
初学者的Rimworld指南:奥德赛
1 个月前 By Jack chen
PHP变量范围解释了
3 周前 By 百草

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Laravel 教程
1603
29
PHP教程
1508
276
如何优化WordPress机器人TXT 如何优化WordPress机器人TXT Jul 13, 2025 am 12:37 AM

robots.txt对WordPress网站的SEO至关重要,能引导搜索引擎抓取行为,避免重复内容并提升效率。1.屏蔽如/wp-admin/、/wp-includes/等系统路径,但避免误封/uploads/目录;2.添加Sitemap路径如Sitemap:https://yourdomain.com/sitemap.xml以帮助搜索引擎快速发现站点地图;3.限制/page/和带参数的URL以减少爬虫浪费,但需注意勿封重要归档页;4.避免常见错误如误封全站、缓存插件影响更新及忽略移动端与子域名配

如何优化WordPress数据库 如何优化WordPress数据库 Jul 14, 2025 am 12:05 AM

优化WordPress数据库能有效提升网站速度和稳定性,关键步骤包括:1.清理无用数据,如垃圾评论、修订版本和草稿,可通过修改配置或插件限制修订数量并批量删除无效内容;2.优化数据库表,使用插件或SQL命令修复和压缩碎片化表,提升查询效率;3.删除不再使用的插件和主题残留数据,避免占用空间和引发冲突,必要时手动清理遗留配置;4.操作前必须完整备份数据库,可借助插件或控制面板导出数据确保安全。定期执行上述操作,可保持网站高效运行。

如何使用高级自定义字段ACF 如何使用高级自定义字段ACF Jul 13, 2025 am 12:09 AM

使用ACF的关键在于理解其工作流程与应用场景,具体步骤如下:1.创建自定义字段组,进入后台“CustomFields”菜单,添加字段组并设置显示规则;2.在模板中调用字段数据,通过PHP函数the_field或get_field展示字段内容;3.使用选项页面实现全局设置,通过代码添加选项页面并调用全局字段;4.注意字段命名规范、字段组顺序、导出字段组及本地开发同步等小技巧。掌握这些步骤后,ACF能显着提升WordPress开发效率。

如何使用WP-CLI更新插件 如何使用WP-CLI更新插件 Jul 20, 2025 am 01:07 AM

使用WP-CLI更新插件需1.通过SSH登录服务器并进入网站目录;2.执行wppluginupdateplugin-slug更新单个插件或wppluginupdate--all更新全部插件;3.遇到问题检查权限、磁盘空间及冲突插件。整个过程无需登录后台,但需注意备份与兼容性风险,并可通过--dry-run或--debug参数辅助排查问题。

如何在WordPress中使用动作钩 如何在WordPress中使用动作钩 Jul 14, 2025 am 12:07 AM

ActionHook是WordPress执行流程中的“插入点”,允许开发者在不修改核心代码的情况下添加自定义功能。常见的使用场景包括加载资源、执行操作、修改跳转逻辑、插入统计代码等,常用钩子有init、wp_enqueue_scripts、admin_init、wp_footer和save_post。要添加ActionHook,需使用add_action()函数,格式为:add_action('钩子名称','回调函数名',优先级,参数数量),未指定时默认优先级为10,参数数量为1。选择合适的钩子

如何使用WP-CLI管理Cron Job 如何使用WP-CLI管理Cron Job Jul 21, 2025 am 12:50 AM

TomanagecronjobsinWordPressusingWP-CLI,youcanlist,run,schedule,anddeleteeventsviacommand-linetools.1.Usewpcroneventlisttocheckactivecroneventsandfilterwith--hook=some_hook_name.2.Manuallytriggerataskwithwpcroneventrunsome_hook_name.3.Schedulenewtasks

如何将多站点迁移到一个站点 如何将多站点迁移到一个站点 Jul 19, 2025 am 12:18 AM

要将WordPress多站点中的子站点迁移到单站点,需依次执行以下步骤:1.使用WordPress自带导出工具导出文章、页面等内容;2.从数据库中导出对应前缀的表并重命名为单站点格式,同时替换旧域名;3.手动迁移媒体文件并修复路径;4.配置新站点的主题、插件及设置并进行测试。整个过程需注意数据清理、URL替换和插件兼容性,确保迁移后功能正常。

如何在WordPress中注册自定义菜单位置 如何在WordPress中注册自定义菜单位置 Jul 17, 2025 am 12:34 AM

ToregisteracustommenuinWordPress,usetheregister_nav_menus()functioninsideyourtheme’sfunctions.phpfile.First,defineoneormoremenulocationsusinganassociativearraywherekeysareinternalnames(slugs)andvaluesarehuman-readablenames.1.Hookthefunctioninto'after

See all articles