WordPress Gutenberg 插件侧边栏开发指南

WordPress Gutenberg 插件侧边栏开发指南

gutenberg The Block Editor project for WordPress and beyond. Plugin is available from the official repository. gutenberg 项目地址: https://gitcode.com/gh_mirrors/gu/gutenberg

前言

在 WordPress Gutenberg 编辑器中,插件侧边栏是一个强大的扩展点,允许开发者为编辑器右侧区域添加自定义功能面板。本文将详细介绍如何从零开始创建一个功能完整的插件侧边栏。

核心概念

插件侧边栏是 Gutenberg 编辑器的重要组成部分,它位于编辑器右侧区域,通过点击顶部工具栏的图标展开。与区块设置侧边栏不同,插件侧边栏是完全独立的自定义区域。

开发准备

在开始开发前,请确保:

  1. 已创建基本的 WordPress 插件结构
  2. 熟悉基本的 JavaScript 和 PHP 开发
  3. 了解 React 基础概念(Gutenberg 编辑器基于 React 构建)

开发步骤详解

第一步:创建基础侧边栏结构

首先需要注册一个基本的侧边栏框架:

(function(wp, React) {
  const el = React.createElement;
  const registerPlugin = wp.plugins.registerPlugin;
  const PluginSidebar = wp.editor.PluginSidebar;

  registerPlugin('my-plugin-sidebar', {
    render: function() {
      return el(
        PluginSidebar,
        {
          name: 'my-plugin-sidebar',
          icon: 'admin-post',
          title: '我的插件侧边栏',
        },
        '这里将放置内容'
      );
    },
  });
})(window.wp, window.React);

对应的 PHP 注册代码:

function sidebar_plugin_register() {
  wp_register_script(
    'plugin-sidebar-js',
    plugins_url('plugin-sidebar.js', __FILE__),
    array('wp-plugins', 'wp-editor', 'react')
  );
}
add_action('init', 'sidebar_plugin_register');

function sidebar_plugin_script_enqueue() {
  wp_enqueue_script('plugin-sidebar-js');
}
add_action('enqueue_block_editor_assets', 'sidebar_plugin_script_enqueue');

第二步:添加样式和交互控件

接下来我们为侧边栏添加样式和输入控件:

(function(wp) {
  const el = React.createElement;
  const registerPlugin = wp.plugins.registerPlugin;
  const PluginSidebar = wp.editor.PluginSidebar;
  const TextControl = wp.components.TextControl;

  registerPlugin('my-plugin-sidebar', {
    render: function() {
      return el(
        PluginSidebar,
        {
          name: 'my-plugin-sidebar',
          icon: 'admin-post',
          title: '我的插件侧边栏',
        },
        el(
          'div',
          { className: 'plugin-sidebar-content' },
          el(TextControl, {
            label: '元数据字段',
            value: '初始值',
            onChange: function(content) {
              console.log('内容已变更为', content);
            },
          })
        )
      );
    },
  });
})(window.wp);

添加基本样式(plugin-sidebar.css):

.plugin-sidebar-content {
  padding: 16px;
}

更新 PHP 依赖:

wp_register_script(
  'plugin-sidebar-js',
  plugins_url('plugin-sidebar.js', __FILE__),
  array('react', 'wp-plugins', 'wp-editor', 'wp-components')
);

第三步:注册元数据字段

在 PHP 中注册元字段:

register_post_meta('post', 'sidebar_plugin_meta_block_field', array(
  'show_in_rest' => true,
  'single' => true,
  'type' => 'string',
));

第四步:连接输入控件与元数据

使用 WordPress 数据钩子连接前端与后端:

const MetaBlockField = function() {
  const metaFieldValue = wp.data.useSelect(function(select) {
    return select('core/editor').getEditedPostAttribute('meta')['sidebar_plugin_meta_block_field'];
  }, []);

  return el(TextControl, {
    label: '元数据字段',
    value: metaFieldValue,
    onChange: function(content) {
      console.log('内容已变更为', content);
    },
  });
};

第五步:实现数据双向绑定

完整实现数据更新功能:

const MetaBlockField = function() {
  const metaFieldValue = wp.data.useSelect(function(select) {
    return select('core/editor').getEditedPostAttribute('meta')['sidebar_plugin_meta_block_field'];
  }, []);

  const editPost = wp.data.useDispatch('core/editor').editPost;

  return el(TextControl, {
    label: '元数据字段',
    value: metaFieldValue,
    onChange: function(content) {
      editPost({
        meta: { sidebar_plugin_meta_block_field: content },
      });
    },
  });
};

注意事项

  1. 确保文章类型支持自定义字段
  2. 如果启用了自定义字段面板,注意命名冲突问题
  3. 私有元字段(前缀为_)需要额外处理

进阶技巧

  1. 可以添加多个不同类型的控件
  2. 实现控件间的联动效果
  3. 添加表单验证功能
  4. 支持多语言

总结

通过本文的步骤,您已经掌握了在 WordPress Gutenberg 编辑器中创建自定义插件侧边栏的完整流程。从基础结构搭建到数据双向绑定,这些技术可以应用于各种编辑器扩展场景。

开发过程中,建议充分利用 WordPress 提供的各种组件和工具函数,这不仅能提高开发效率,还能确保与编辑器保持一致的交互体验。

gutenberg The Block Editor project for WordPress and beyond. Plugin is available from the official repository. gutenberg 项目地址: https://gitcode.com/gh_mirrors/gu/gutenberg

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

牧丁通

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值