indieweb / wordpress-micropub
WordPress 的 Micropub 端点 http://wordpress.org/plugins/micropub/
Requires
- composer/installers: ~1.0 || ~2.0
Requires (Dev)
- dev-trunk
- 2.4.0
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.5
- 2.2.4
- 2.2.3
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.0
- 2.0.11
- 2.0.10
- 2.0.9
- 2.0.8
- 2.0.7
- 2.0.6
- 2.0.5
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.4.3
- v1.4.1
- v1.4
- v1.3
- dev-dynamic
- dev-removedraft
- dev-follow
- dev-iss281
- dev-fixtests286
- dev-invisible-reply-context
- dev-jun22updates
- dev-icons
- dev-pluck
- dev-mediaupdates21
- dev-testupdate
- dev-refactor21
- dev-mediapublished
- dev-featured
- dev-mp
- dev-authtweaks
- dev-category
- dev-empty-needle
- dev-travis
This package is auto-updated.
Last update: 2024-09-13 05:09:33 UTC
README
贡献者: indieweb, snarfed, dshanske
标签: micropub, publish, indieweb, microformats
至少需要 4.9.9
已测试到 6.5.2
稳定标签 2.4.0
需要 PHP 7.2
许可证: CC0
许可证 URI: http://creativecommons.org/publicdomain/zero/1.0/
允许您使用 Micropub 客户端将内容发布到您的站点。
描述
Micropub 是一个开放的 API 标准,用于使用第三方客户端在您的网站上创建帖子。Web 应用程序和原生应用程序(例如 iPhone、Android)可以使用 Micropub 将简短笔记、照片、事件或其他帖子发布到您的网站,类似于 Twitter 客户端将帖子发布到 Twitter.com。需要 IndieAuth 插件进行身份验证。
安装并激活插件后,尝试使用 Quill 等客户端创建您网站上的新帖子。它会指导您完成步骤,并在遇到任何问题帮助您解决问题。已知的 Micropub 客户端列表可在 此处 查找。
支持完整的 Micropub 规范
由于这允许在不进入 WordPress 管理员的情况下创建帖子,因此它本身不受任何 Gutenberg 兼容性问题的限制。创建的帖子将不会有 Gutenberg 块,因为它们不是使用 Gutenberg 创建的,但除此之外,目前应该没有问题。
在 wordpress.org/plugins/micropub 的 WordPress 插件目录中提供。
许可证
本项目置于公有领域。您也可以在 CC0 许可证 下使用它。
WordPress 详细信息
过滤器与钩子
添加了十个过滤器
before_micropub( $input )
在处理 Micropub 请求之前调用。返回 $input
,可能已修改。
micropub_post_content( $post_content, $input )
在处理 Micropub 请求期间调用。内容生成函数默认附加到此过滤器。返回 $post_content
,可能已修改。
micropub_post_type( $post_type = 'post', $input )
在创建 Micropub 帖子期间调用。默认为 post,但允许将 Micropub 帖子设置为自定义帖子类型。
micropub_tax_input( $tax_input, $input )
在创建 Micropub 帖子期间调用。默认为无,但允许 Micropub 帖子设置自定义分类法。
micropub_syndicate-to( $synd_urls, $user_id, $input )
用于生成响应查询时返回的 syndicate-to
目标列表。返回 $synd_urls
,一个数组,可能已修改。默认为空的过滤器。
micropub_query( $resp, $input )
允许您用您自己的定制版本替换查询响应以添加更多信息。
micropub_suggest_title( $mf2 )
允许生成建议的标题。这可以用来生成文章别名,或者供那些想要用它来设置WordPress标题的个人使用。
indieauth_scopes( $scopes )
此函数返回实现IndieAuth的插件中的作用域。默认情况下,此过滤器为空。
indieauth_response( $response )
此函数返回实现IndieAuth的插件中的令牌认证响应。默认情况下,此过滤器为空。
pre_insert_micropub_post( $args )
此过滤器在插入之前过滤发送给wp_insert_post的参数。如果设置了ID键,则此将中断插入过程,以便进行自定义数据库编码。
...并且有两个钩子
after_micropub( $input, $wp_args = null)
在处理Micropub请求后调用。如果请求失败(即不返回HTTP 2xx),则不会调用。
micropub_syndication( $ID, $syndicate_to )
仅在存在用于文章$ID的同步目标$syndicate_to时调用。$syndicate_to将是使用micropub_syndicate-to
过滤器添加的UID数组。
参数
$input
:关联数组,Micropub请求的JSON格式。如果请求是表单编码或multipart文件上传,则将其转换为JSON格式。$wp_args
:可选的关联数组。对于创建和更新,这是传递给wp_insert_post
或wp_update_post
的参数。对于删除和恢复删除,args['ID']
包含要(未)删除的文章ID。对于查询,为null。
其他
将microformats2属性存储在文章元数据中,键名以mf2_
为前缀。详情请见此处。所有值都是数组;使用unserialize()
来反序列化它们。
不支持多线程。PHP实际上也不支持多线程,所以这通常不会产生影响,但仅作记录。
支持Micropub的稳定扩展
- 文章状态 - 可以是
published
或draft
- 可见性 - 可以是
public
或private
。 - 查询分类/标签列表 - 支持查询分类和标签。
- 别名 - 自定义别名。
- 查询文章列表 - 支持查询最后x篇文章。
支持Micropub的提议扩展
- 查询的限定参数 - 支持向任何设计为返回选项列表的查询添加限制,以限制其数量。
- 查询的偏移参数 - 支持向任何查询添加偏移。必须与limit一起使用。
- 查询的过滤器参数 - 支持分类/标签列表查询。
- 位置可见性 - 可以是
public
、private
或protected
- 查询支持的查询 - 返回端点支持的查询参数列表
- 查询支持属性 - 返回端点支持的实验性属性列表,以便客户端可以选择隐藏不支持的项目。
- 使用Link Rel发现媒体端点 - 为媒体端点添加链接头
- 支持扩展的GEO URI - 支持向GEO URI添加任意参数。Micropub将其转换为mf2对象。内置在Indigenous客户端中支持。
- 支持删除上传的媒体 - 支持在媒体端点使用action=delete&url=url来删除文件。
- 支持在媒体端点查询媒体,以及可选的相同URL参数
- 支持通过MIME类型过滤媒体查询
- 在q=config中返回可见性
仍然支持已弃用的扩展
- 最后上传的媒体 - 支持查询最后上传的图像...设置为最后1小时内。这已被媒体端点上的
q=source&limit=1
支持所取代。
其他插件支持的扩展
- 查询位置 - 如果已安装Simple Location,则支持。
如果实验性属性未设置为以下列出的选项之一,则插件将返回HTTP 400错误,并带有主体
{
"error": "invalid_request",
}
WordPress有一个允许在上传中使用的文件扩展名白名单。如果您上传了Micropub扩展中没有允许扩展的文件,则插件将返回带有主体的HTTP 400错误。
{
"error": "invalid_request",
"error_description": "Sorry, this file is not permitted for security reasons."
}
身份验证和授权
出于安全考虑,建议您仅在实施HTTPS的网站上使用此插件。此插件没有内置身份验证。
为了使用此功能,需要IndieAuth插件。将来可能会编写其他插件作为替代方案,如果有,将会注明。
安装
从WordPress插件目录安装IndieAuth插件,然后安装此插件。无需设置。
配置选项
可以通过将它们添加到wp-config.php中启用这些配置选项
define('MICROPUB_NAMESPACE', 'micropub/1.0' )
- 默认情况下,micropub的命名空间为micropub/1.0。这允许您为端点更改此值define('MICROPUB_DISABLE_NAG', 1 )
- 禁用不安全站点的通知define('MICROPUB_DRAFT_MODE', 1 )
- 覆盖默认帖子状态,并设置为草稿以进行调试目的。
常见问题解答
我在使用IndieAuth登录时遇到问题。
IndieAuth插件中有一系列故障排除步骤。最常见的问题是令牌未传递,这是由于您的托管提供商的配置导致的。
升级通知
版本2.4.0
由于IndieAuth插件现在允许创建草稿令牌来满足这一需求,以下选项和设置已从插件中删除。由于这是唯一的设置,整个设置页面也已删除。
micropub_default_post_status
- 如果设置,Micropub帖子将默认设置为该状态(发布、草稿或私人)。
旧的MICROPUB_DRAFT_MODE配置覆盖目前仍然保留。
静态渲染已被动态渲染所取代。这意味着如果您禁用此插件,它将不会渲染较新帖子上的微格式。这使用的是与静态渲染相同的代码,但计划进行未来的增强。
版本 2.2.3
Micropub 插件将不再存储已发布、更新、摘要或名称选项。这些将来自它们映射的 WordPress 帖子属性,并在查询时返回。
版本 2.2.0
Micropub 插件在没有安装 IndieAuth 插件的情况下将无法工作。
版本 2.0.0
此版本更改了 Micropub 端点 URL,因为它现在使用 REST API。您可能需要更新缓存了此信息的任何第三方程序。
屏幕截图
无。
开发
标准仓库是 http://github.com/indieweb/wordpress-micropub。欢迎提供反馈和拉取请求!
要将新版本添加到 WordPress 插件目录,请使用版本号标记它,并推送标签。它将自动部署。
要设置本地环境以运行单元测试并设置 PHPCodesniffer 以测试遵守 WordPress 编码标准 和 PHP 兼容性
- 安装 Composer。Composer 仅用于开发,运行插件时不需要。
- 运行
composer install
,这将安装 PHP Codesniffer、PHPUnit、所需的标准以及所有依赖项。
要配置 PHPUnit
-
安装并启动 MySQL。(您可能已经有了。)
-
运行
./bin/install-wp-tests.sh wordpress_micropub_test root '' localhost
以下载 WordPress 和 其单元测试库,默认下载到您系统的 tmp 目录,并创建一个用于测试的 MySQL 数据库。有关背景信息,请参阅 此处。您可以使用除root
之外的其他 MySQL 用户。您可以将WP_CORE_DIR
和WP_TESTS_DIR
环境变量设置为更改 WordPress 及其测试库的安装位置。例如,我将它们都放在了仓库目录中。 -
打开
wordpress-tests-lib/wp-tests-config.php
并在 ABSPATH 值的末尾添加一个斜杠。不清楚为什么它没有添加斜杠;没有它无法正常工作。 -
在仓库根目录中运行
phpunit
。如果您设置了上面的WP_CORE_DIR
和WP_TESTS_DIR
,您需要为这个也设置它们。您应该会看到类似以下输出的内容安装... ... 1 / 1 (100%) 时间:703 毫秒,内存:33.75Mb OK(1 个测试,3 个断言)
要设置 PHPCodesniffer 以测试遵守 WordPress 编码标准 和 PHP 5.6 兼容性
- 要列出文件中的编码标准问题,请运行
composer phpcs
- 如果您想尝试自动修复问题,请运行 `composer phpcbf``。
要自动将 readme.txt 文件转换为 readme.md,如果您已经按照上一节中的说明安装了 composer,则可以运行 composer update-readme
将 .txt 文件转换为 markdown 并保存到 readme.md。
变更日志
2.4.0 (2024-06-13)
- 移除单个设置,因为不再需要(请参阅升级通知)
- 移除设置页面,因为没有更多设置。
- 将最低 PHP 版本提升到 PHP7.2
- 将 IndieAuth 插件作为依赖项
- 将帖子从静态渲染切换到动态渲染...标记将不再放置在内容块内,而是动态添加。
2.3.3 (2023-03-10)
- 停止在回复上下文中包含可见文本,因为它们已进入e-content中,这是webmention接收者用作回复文本的。
- 修复未声明的变量
2.3.2 (2022-06-22 )
- 更新readme
- 修复客户端名称错误
2.3.1 (2021-12-25 )
- 犯了一个小小的错误。
2.3.0 (2021-12-25 )
- 清理媒体端点查询
- 为媒体查询添加mime_type过滤器
- 更新媒体端点查询响应
- 如果存在,设置客户端应用程序分类ID
- 添加显示函数,用于显示客户端或返回客户端数据,这将与或无Indieauth中添加的客户端应用程序分类一起工作
- 规范化JSON输入以确保无错误
- 添加对Visibility配置返回的支持 indieweb/micropub-extensions#8 (comment)
- 当帖子更新时设置
_edit_last
属性。
2.2.5 (2021-09-22 )
- 更新readme链接
- 添加过滤器以允许自定义数据库插入。
- 纬度和经度属性现在转换为位置属性。
- 引入新功能以简化返回正确设置时区的时间日期。
- 媒体端点现在支持删除操作。
- 新的查询单元测试揭示了之前引入的新q=source&url=查询中的错误。
- 更新媒体响应,现在仅包括已发布、更新、创建和mime_type。
2.2.4 (2021-05-06 )
- 将发布日期添加到媒体端点的q=source返回中
2.2.3 (2020-09-09 )
- 从端点和媒体端点类中删除了重复的端点测试代码。
- 移除错误抑制,揭示了几条已隐藏的通知。修复了警告通知。
- 将请求范围和响应抽象到函数中,以避免调用实际过滤器,因为这可能在将来被弃用。
- 将检查权限切换为是否用户已登录。
- 已发布、更新、名称和摘要属性不再存储在帖子元数据中。当查询时,它们将来自等效的WordPress属性。内容也应如此,但是,因为帖子中的内容包含渲染的微格式,我们需要存储纯版本。可能在未来的版本中解决这个问题。
- 由于时区不在WordPress时间戳中存储,因此将帖子的时间区偏移量存储在元数据中。
- 如果设置了特色属性,则侧载并设置特色图像。
2.2.2 (2020-08-23 )
- 修复和更新了测试环境
- 修复了由于测试环境更新而失败的测试
- 根据规范更新从401更改为403更改返回响应代码
2.2.1 (2020-07-31 )
- 根据Micropub弹出会议的决定,将分类查询参数从搜索更改为过滤
- 修复媒体端点的权限,以匹配端点
- 对于媒体和micropub端点的源查询,支持偏移参数
2.2.0 (2020-07-25 )
- 弃用MICROPUB_LOCAL_AUTH、MICROPUB_AUTHENTICATION_ENDPOINT和MICROPUB_TOKEN_ENDPOINT常量。
- 移除IndieAuth客户端代码,现在将需要IndieAuth或其他尚不存在的插件。
2.1.0 (2020-02-06 )
- 修复时区元键始终设置为网站时区而不是提供的时区的错误。
- 通过采用WordPress核心代码修复了标题和说明没有为图像设置的问题。
- 移除帖子范围
- 添加对草稿范围的支持
- 通过确保除非他们有那个能力,否则无法编辑其他用户的帖子来改进权限处理
- 修复事件中日期渲染的问题
- 在创建帖子时返回URL
- 引入两个新的过滤器以过滤帖子类型和帖子分类输入
2.0.11 (2019-05-25)
- 修复与空变量相关的问题
- 更新最后媒体查询,限制其限制为最后一小时
- 由于没有undelete范围,undelete现在是删除范围的一部分
- 解决上传属性中的属性是单个属性数组的问题
2.0.10 (2019-04-13)
- 修复媒体未附加到帖子的问题
2.0.9 (2019-03-25)
- 添加过滤器
micropub_suggest_title
和相关函数以生成缩略名 - 将地图更新属性映射到WordPress修改属性
- 为micropub上传的媒体添加元键,以便进行查询
- 为媒体端点添加最后和来源查询
- 设置媒体返回函数,目前返回附件元数据
2.0.8 (2019-03-08)
- 将geo URI解析为h-geo或h-card对象
2.0.7 (2019-02-18)
- 更新geo存储以修复精度存储,并允许传递名称参数和未来的参数。Android原生的现在支持传递此参数
2.0.6 (2018-12-30)
- 调整查询过滤器以允许通过查询添加新属性
- 将Gutenberg信息添加到README中
2.0.5 (2018-11-23)
- 将同步触发器移动到micropub钩子之后,以确保在发送同步之前渲染最终版本
- 添加设置UI以用于替代授权端点和令牌端点,如果启用Indieauth插件,则将其隐藏
2.0.4 (2018-11-17)
- 在先前版本中提出的问题。
- 删除数据为空时生成调试消息
2.0.3 (2018-11-17)
- 通过在上传时将其添加为属性来修复after_micropub操作无法看到表单编码文件的问题
- 修复了之前版本中的问题,未考虑到wpcli发送的空请求
- 将搜索参数添加到类别
- 将类别查询包裹在categories键中,以与其他查询参数保持一致
- 如果未提供查询源参数的URL,则返回最后10篇或更多/更少的文章,并带有可选参数
- Micropub查询过滤器现在在添加默认参数之后而不是之前调用,因此它可以修改默认参数而不是替换它们。
- Micropub配置查询现在返回支持的mp参数和支持的q查询参数列表
- Micropub媒体端点配置查询现在返回一个空数组,表示它还没有配置参数
2.0.2 (2018-11-12)
- 修复了内置授权和更新兼容性测试的问题
- 添加实验性端点发现选项(https://indieweb.org/micropub_media_endpoint#Discovery_via_link_rel)
2.0.1 (2018-11-04)
- 在加载过程中稍后移动授权代码以解决冲突
2.0.0 (2018-10-22)
- 根据功能将插件拆分为文件
- 将授权修改为与WordPress的登录机制集成
- 拒绝无法与用户账户匹配的URL
- 使用REST API重写
- 使用原本为IndieAuth集成添加的
indieauth_scopes
和indieauth_response
,以便内置授权也能使用 - 改进对headers中访问令牌的处理,以覆盖更多情况
- 添加媒体端点
- 改进错误处理
- 确保符合Micropub规范
- 更新composer依赖关系,并将PHPUnit包含为开发依赖项
- 添加http域名的警告通知,并提供通过设置禁用的选项
- 在init序列中稍后加载auth以避免冲突
1.4.3 (2018-05-27)
- 将作用域更改为过滤器
- 当安装IndieAuth插件时获取令牌响应
1.4.2 (2018-04-19)
- 强制作用域
1.4.1 (2018-04-15)
- 由于某些个人未收到模板文件,因此进行版本提升
1.4 (2018-04-08)
- 将生成头部的函数分别放在micropub和IndieAuth中
- 添加对现在由IndieAuth插件使用的选项的支持,以设置替代令牌和授权端点
- MICROPUB_LOCAL_AUTH配置选项调整为反映此操作禁用了插件内置的认证。这可以将其交回WordPress或允许其他插件接管
- MICROPUB_LOCAL_AUTH现在禁用向页面添加认证头部
- 通过检查有效默认值来修复帖子状态问题
- 在写作设置下添加配置选项以设置默认帖子状态
- 添加
micropub_syndication
钩子,该钩子仅在请求同步时触发,以便第三方插件更容易挂钩
1.3 (2017-12-31)
- 将访问令牌响应保存到帖子元字段
micropub_auth_response
中。 - 修复
post_date_gmt
的错误 - 将时区信息存储在传递给 micropub 过滤器的参数中
- 正确处理与站点时区不同的发布时间。
- 最低版本要求为 PHP 5.3
- 遵循 WordPress 编码标准
- 添加
micropub_query
过滤器 - 支持内容生成中的嵌套属性
- 弃用
MICROPUB_DRAFT_MODE
配置选项,转而使用设置选项 - 在安装了支持 microformats2 主题或 Post Kinds 插件的情况下,移除发布内容生成覆盖
- 引入
micropub_post_content
过滤器,将发布内容生成附加到其中,以便主题或插件可以根据需要修改/删除发布生成
1.2 (2017-06-25)
- 支持 OwnYourSwarm 的 自定义
checkin
microformats2 属性,包括必要时自动生成内容。 - 支持
u-bookmark-of
。
1.1 (2017-03-30)
- 支持
h-adr
,h-geo
和p-location
的纯文本值。 - 修复使用
content[html]
创建/更新时的错误。
1.0.1
- 移除对 PHP 5.3 的意外依赖 (#46)。
1.0
重大更新。支持 完整的 W3C Micropub 规范,除了可选的媒体端点外。
- 将
mf2_*
发布元格式从多个单独的值更改为单个数组值,该值可以使用unserialize
反序列化。 - 将
before_micropub
过滤器的签名从( $wp_args )
更改为( $input )
(microformats2 关联数组)。 - 将
after_micropub
钩子的签名从( $post_id )
更改为( $input, $wp_args )
(microformats2 关联数组,WordPress 发布参数)。 - 如果主题支持 microformats2 或启用了 Post Kinds 插件,则不会自动标记发布内容。
- 添加 PHP Codesniffer 文件。
0.4
- 除了黑名单中的属性外,将所有属性存储在发布元中。
- 支持通过设置
MICROPUB_AUTHENTICATION_ENDPOINT
和MICROPUB_TOKEN_ENDPOINT
在 wp-config 中设置身份验证和令牌端点。 - 支持通过在 wp-config 中设置
MICROPUB_DRAFT_MODE
来将所有 micropub 发布设置为草稿以进行测试。 - 支持通过在 wp-config 中设置
MICROPUB_LOCAL_AUTH
来使用本地身份验证而不是 IndieAuth。 - 如果没有提供内容,则将内容设置为摘要。
- 支持查询
syndicate-to
和future
查询选项。
0.3
- 如果可能,使用与访问令牌匹配的特定 WordPress 用户 URL。
- 同时设置
post_date_gmt
和post_date
。
0.2
- 支持更多 Micropub 属性:
photo
、like-of
、repost-of
、in-reply-to
、rsvp
、location
、category
、h=event
。 - 检查但不在本地主机上要求访问令牌。
- 更好的错误处理。
0.1
初始发布。