humanmade/rest-api-search-by-id

WordPress 插件,用于在 REST API /search 端点支持包含和排除参数。

安装: 12

依赖项: 0

建议者: 0

安全: 0

星标: 2

关注者: 14

分支: 1

开放问题: 0

类型:wordpress-plugin

v1.0.1 2021-10-15 16:06 UTC

This package is auto-updated.

Last update: 2024-09-19 06:50:39 UTC


README

此插件修改了 WordPress REST API /wp/v2/search 端点,以支持在其他集合中使用 includeexclude 查询参数。

在默认的 REST API 中,你必须知道资源的帖子类型才能对其进行查询,因为 API 路由是根据资源类型分开的。然而,在 WordPress 中,我们有许多只接受 ID 并返回匹配帖子的函数,无论类型如何。当此插件激活时,可以按 ID 查询特定帖子对象,即使不知道该记录的帖子类型。

/wp/v2/search?type=post&include=12345

useResourceById 钩子

除了上述 API 查询参数更改外,当此插件激活时,在您使用块编辑器时还会排队一个名为 use-resource-by-id 的脚本。此脚本声明一个 React 钩子,它包装 WordPress 块编辑器自己的 getEntityRecord 选择器,让您可以在不知道帖子类型的情况下请求帖子资源。

用法

// The hook is exposed as a browser global.
const { useResourceById } = window;

const MyComponent = () => {
	// Assuming the post object with ID 2501 is a 'customPostType', these two
	// hook calls will result in the exact same data:
	const result1 = useSelect( ( select ) => {
		return select( 'core' ).getEntityRecord( 'postType', 'post', 2501 );
	} );
	const result2 = useResourceById( 2501 );
};

此钩子使用带有 include 参数的搜索端点来确定请求记录的 subtype。一旦知道这个子类型,就会将其缓存到内存中,然后钩子将返回直接 getEntityRecord 调用的结果,以便资源通过块编辑器数据存储正确路由。

安装

使用 Composer 将此添加到您的网站,通过运行:

composer require humanmade/rest-api-search-by-id

此软件包指定这是一个 WordPress 插件,因此根据您的 Composer 安装器配置方式,这应该会自动放入您的插件目录中。当然,您也可以手动下载一个发布版本的 zip 文件,并通过其他方式将其加载到您的网站上。

注意事项

目前,此插件中实现的 includeexclude 假设您只查询 post 对象。可能以后会增加对跨对象类型搜索的支持。

发布流程

要发布新版本,请:

  • package.jsonplugin.php 中增加版本号(插件头和 wp_enqueue_script 调用中的版本参数)
  • 使用 npm run build 生成最小化文件
  • 提交构建的代码
  • 使用所需版本号进行标记

例如:

# (Manually edit package.json and plugin.php to set version 1.2.3)
npm run build
git add js/use-resource-by-id.min.js
git commit -m 'Release v1.2.3'
git tag v1.2.3
git push origin main
git push origin --tags

许可证

GPL v2 或更高版本