humanmade / rest-api-search-by-id
WordPress 插件,用于在 REST API /search 端点支持包含和排除参数。
Requires
- composer/installers: ~1.0
README
此插件修改了 WordPress REST API /wp/v2/search
端点,以支持在其他集合中使用 include
和 exclude
查询参数。
在默认的 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 文件,并通过其他方式将其加载到您的网站上。
注意事项
目前,此插件中实现的 include
和 exclude
假设您只查询 post
对象。可能以后会增加对跨对象类型搜索的支持。
发布流程
要发布新版本,请:
- 在
package.json
和plugin.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 或更高版本