块编辑器开发文档

@wordpress/core-abilities

💡 云策文档标注

概述

@wordpress/core-abilities 包为 Abilities API 提供 WordPress 核心能力的集成层,负责从 WordPress REST API 获取并注册所有能力和类别。

关键要点

  • 安装方式:通过 npm install @wordpress/core-abilities --save 安装,需在 ES2015+ 环境中运行,否则需包含 @wordpress/babel-preset-default 的 polyfill。
  • 自动初始化:作为脚本模块加载时,自动从 /wp-abilities/v1/categories 和 /wp-abilities/v1/abilities 端点获取数据,并注册到 @wordpress/abilities 包。
  • 异步处理:初始化是异步的,可使用导出的 ready promise 等待注册完成后再调用 getAbilities() 或 executeAbility()。
  • 项目背景:这是 Gutenberg 项目的一部分,采用 monorepo 结构,包发布到 npm 供 WordPress 和其他项目使用。

📄 原文内容

WordPress core abilities integration for the Abilities API.

This package provides the integration layer between the @wordpress/abilities package and WordPress REST API. It fetches and registers all abilities and categories from the WordPress server.

Installation

Install the module:

npm install @wordpress/core-abilities --save

This package assumes that your code will run in an ES2015+ environment. If you’re using an environment that has limited or no support for such language features and/or APIs, you should include the polyfill shipped in @wordpress/babel-preset-default in your code.

Usage

This package is designed to be loaded as a script module on WordPress admin pages. When loaded, it automatically:

  1. Fetches all ability categories from /wp-abilities/v1/categories
  2. Registers them with @wordpress/abilities
  3. Fetches all abilities from /wp-abilities/v1/abilities
  4. Registers them with a callback that handles execution via REST API

Simply import the package to initialize the WordPress abilities:

import '@wordpress/core-abilities';

Initialization is asynchronous because categories and abilities are fetched from the REST API. To wait for registration to finish before calling getAbilities() or executeAbility(), await the exported ready promise:

import { ready } from '@wordpress/core-abilities';
import { getAbilities, executeAbility } from '@wordpress/abilities';

await ready;

console.log( getAbilities() );
console.log( await executeAbility( 'core/get-site-info' ) );

Contributing to this package

This is an individual package that’s part of the Gutenberg project. The project is organized as a monorepo. It’s made up of multiple self-contained software packages, each with a specific purpose. The packages in this monorepo are published to npm and used by WordPress as well as other software projects.

To find out more about contributing to this package or Gutenberg as a whole, please read the project’s main contributor guide.