让代码更简单

WordPress块编辑器插件开发之目录文件介绍

重要:本文最后更新于2024-03-17 20:20:20,某些文章具有时效性,若有错误或已失效,请在下方留言或联系代码狗

上一篇我们完成了nodejs的环境安装,并且利用wordpress官方的脚手架工具快速创建了一个测试插件testplugin,它的目录结构如下

其中,build目录是经过nodejs打包构建后的目录,简单来说它就是给用户运行的插件目录之一。node_modules是nodejs构建需要的支持库模块。src就是你需要编写代码的插件目录。package.json存放了你的插件包的信息,如下

复制
{
	"name": "testplugin",
	"version": "0.1.0",
	"description": "Example block scaffolded with Create Block tool.",
	"author": "The WordPress Contributors",
	"license": "GPL-2.0-or-later",
	"main": "build/index.js",
	"scripts": {
		"build": "wp-scripts build",
		"format": "wp-scripts format",
		"lint:css": "wp-scripts lint-style",
		"lint:js": "wp-scripts lint-js",
		"packages-update": "wp-scripts packages-update",
		"plugin-zip": "wp-scripts plugin-zip",
		"start": "wp-scripts start"
	},
	"devDependencies": {
		"@wordpress/scripts": "^27.4.0"
	}
}

不一一介绍了,自己去查吧。还有一个与插件名同名的PHP文件testplugin.php,这个文件是wordpress注册插件的入口文件,你可以在这里编写插件的后台PHP代码,该文件自动生成了注册build目录下的块编辑器插件。

复制
<?php
/**
 * Plugin Name:       Testplugin
 * Description:       Example block scaffolded with Create Block tool.
 * Requires at least: 6.1
 * Requires PHP:      7.0
 * Version:           0.1.0
 * Author:            The WordPress Contributors
 * License:           GPL-2.0-or-later
 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
 * Text Domain:       testplugin
 *
 * @package           create-block
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * Registers the block using the metadata loaded from the `block.json` file.
 * Behind the scenes, it registers also all assets so they can be enqueued
 * through the block editor in the corresponding context.
 *
 * @see https://developer.wordpress.org/reference/functions/register_block_type/
 */
function testplugin_testplugin_block_init() {
	register_block_type( __DIR__ . '/build' );
}
add_action( 'init', 'testplugin_testplugin_block_init' );

如果你不喜欢在发布版中使用build目录,可以在这里修改。

将以下文件和目录上传到wordpress插件目录中,即可在wordpress后台看到该插件。

这里重点说说src这个开发文件所在目录

block.json存放块的基本信息,里面包含很多东西

复制
{
	"$schema": "https://schemas.wp.org/trunk/block.json",
	"apiVersion": 3,
	"name": "create-block/testplugin",
	"version": "0.1.0",
	"title": "Testplugin",
	"category": "widgets",
	"icon": "smiley",
	"description": "Example block scaffolded with Create Block tool.",
	"example": {},
	"supports": {
		"html": false
	},
	"textdomain": "testplugin",
	"editorScript": "file:./index.js",
	"editorStyle": "file:./index.css",
	"style": "file:./style-index.css",
	"viewScript": "file:./view.js"
}

重点要介绍category这个属性,它支持如下类型

  • text– 文字,
  • media– 媒体,
  • design– 设计,
  • widgets– 小工具,
  • theme– 主题,
  • embed– 嵌入。

没错,就是在wordpress后台使用Gutenberg编辑器查看所有块中出现的分类,这里填的内容决定你的块出现在哪里。

supports中的html表示是否支持html编辑块

还有别的属性这里默认没有,比如常用的attributes

复制
{
	"$schema": "https://schemas.wp.org/trunk/block.json",
	"apiVersion": 3,
	"name": "create-block/testplugin",
	"version": "0.1.0",
	"title": "Testplugin",
	"category": "widgets",
	"icon": "smiley",
	"description": "Example block scaffolded with Create Block tool.",
	"example": {},
	"supports": {
		"html": false
	},
       "attributes": {
		"result": {
		  "type": "object"
		},
		"theme": {
			"type": "string"
		  }
        }
	"textdomain": "testplugin",
	"editorScript": "file:./index.js",
	"editorStyle": "file:./index.css",
	"style": "file:./style-index.css",
	"viewScript": "file:./view.js"
}

你也可以自定义,在编辑js的时候可以方便的使用这些数据。

最后的几个css自己看名字应该就知道了。它们的内容对应editor.scssstyle.scss

一个简单的插件只需要关注两个文件,edit.jssave.js,它们分别对应编辑器的编辑操作和保存操作,编辑操作只会存储到后台,保存操作才会输出到前端。

当你在后台启用这个插件后,打开一篇文章使用Gutenberg编辑器编辑,可以在小工具中看到一个名为Testplugin的小工具。在编辑器中添加它,它会在编辑器中输出一串文字

复制
Testplugin – hello from the editor!

该内容由edit.js文件中的Edit方法生成。

复制
export default function Edit() {
	return (
		<p { ...useBlockProps() }>
			{ __( 'Testplugin – hello from the editor!', 'testplugin' ) }
		</p>
	);
}

save.js文件中的save方法用来保存内容到前端数据库中

复制
export default function save() {
	return (
		<p { ...useBlockProps.save() }>
			{ 'Testplugin – hello from the saved content!' }
		</p>
	);
}

你可以删除save中的内容如下

复制
export default function save() {
	return (
		<p { ...useBlockProps.save() }>
			/*删除代码*/
		</p>
	);
}

然后使用如下命令重新生成代码,再发布到wordpress。

复制
npm run build

此时在编辑器中块能正常显示内容,但前端不会显示。

注意:文章各个文件的作用仅做快速记忆,也不是必须这样使用,如果要深究请自行查阅官方api文档

感觉很棒!可以赞赏支持我哟~

0 打赏

评论 (0)

登录后评论
QQ咨询 邮件咨询 狗哥推荐