humanmade / 著作权
著作权
Requires
- php: >=7.2
- composer/installers: ^1.0 || ^2.0
- humanmade/asset-loader: ^0.5.0 || ^0.6.1
Requires (Dev)
- dealerdirect/phpcodesniffer-composer-installer: 0.7.0
- ergebnis/composer-normalize: ^2
- humanmade/coding-standards: 1.1.1
- php-stubs/wordpress-stubs: ^5.5
- phpcompatibility/phpcompatibility-wp: 2.1.0
- phpstan/phpstan: 0.12.57
- phpunit/phpunit: ^9.5.20
- roots/wordpress: ~5.9.0
- squizlabs/php_codesniffer: 3.5.8
- szepeviktor/phpstan-wordpress: 0.7.1
- vlucas/phpdotenv: ^3
- wp-cli/db-command: ^2
- wp-phpunit/wp-phpunit: ~5.9.3
- yoast/phpunit-polyfills: ^1.0
This package is auto-updated.
Last update: 2024-08-29 14:58:33 UTC
README
稳定标签: 0.2.17
至少需要: 5.4
测试到: 6.2
需要 PHP: 7.2
许可证: GPL v3 或更新版本
贡献者: johnbillion, humanmade
WordPress中作者归属的现代方法。
描述
著作权是WordPress中作者归属的现代方法。它支持将文章归属给多个作者和嘉宾作者,提供出色的UI,并将API访问作者数据视为一等公民。
著作权目前主要针对在WordPress上实施自定义解决方案的开发者。例如,它不提供在文章底部自动显示作者资料的选项。将来它将包括对现有主题的更广泛支持以及针对实施者和网站构建者的有用功能。
当前状态
Alpha. 通常功能非常强大,但某些功能仍在开发中。
功能
- 每篇文章可以有多个作者
- 嘉宾作者(可以在文章编辑屏幕上就地创建)
- 方便且用户友好的UI,感觉像是WordPress的一部分
- 与块编辑器兼容
- 与经典编辑器兼容
- 在REST API和WP-CLI中提供完整的CRUD支持
- 在RSS源中提供完整支持
- 在Atom源中提供完整支持
- 细粒度的用户权限控制
尚未勾选的功能仍在开发中。
安装
正常使用
composer require humanmade/authorship
开发使用
- 将此存储库克隆到您的插件目录中
- 确保您已安装Composer v2和Node v16
- 安装依赖项:
composer install && npm install
- 启动开发服务器:
npm run start
设计决策
为什么还需要另一个多作者插件?Co-Authors Plus或Bylines或PublishPress Authors怎么样?
首先,这些插件都很棒,多年来一直为我们提供了良好的服务,然而它们都存在类似的问题
- API:缺乏通过REST API和WP-CLI编写和读取作者数据的支持
- UI:有限或自定义UI,感觉不像WordPress的一部分
- 用户:嘉宾作者和实际WordPress用户之间的不必要区别
让我们详细探讨这些观点,并解释著作权是如何解决这些问题的
API设计决策
现代WordPress网站远不止其主题。数据被写入和读取到其API中,因此当与文章的归属作者一起工作时,需要将其视为一等公民。
著作权提供
- 通过
wp/v2/posts
REST API端点的authorship
字段读取和编写归属作者的能力 - 通过
authorship/v1/users
REST API端点创建嘉宾作者的能力 - 通过
authorship/v1/users
REST API端点对可以归属到文章的用户进行只读访问 - 通过WP-CLI使用
--authorship
标志在创建或更新文章时指定归属作者的能力
UI设计决策
我们希望您激活作者身份功能后,能忘记它的功能是由插件提供的。用户界面提供了方便的功能,同时在不失协调性的情况下,适用于块编辑器和经典编辑器。
用户设计决策
现有的提供访客作者功能的插件在访客作者和真实WordPress用户之间做出区分。访客作者仅作为一个分类术语存在,这复杂了用户体验,并在数据中造成不一致和重复。
作者身份为每个访客作者创建了一个真实的WordPress用户账户,这提供了几个优点
- 没有为单独管理访客作者而定制的管理屏幕
- 自定义用户配置文件的插件也适用于访客作者
- 一致的数据结构 - 您只处理
WP_User
对象 - 无需在用户及其“作者”配置文件之间同步数据
- 只需通过更改用户角色,就可以将访客作者提升为功能用户
模板函数
以下模板函数可用于您的主题中获取帖子的归属作者
\Authorship\get_author_names( $post )
- 返回归属作者的名字列表,以逗号分隔
\Authorship\get_author_names_sentence( $post )
- 返回一个声明归属作者名字的句子,本地化到当前语言
\Authorship\get_author_names_list( $post )
- 返回归属作者名字的无序列表,以HTML形式
\Authorship\get_authors( $post )
- 返回归属作者的用户对象列表
\Authorship\get_author_ids( $post )
- 返回归属作者的用户ID列表
REST API
以下REST API端点和字段可用
authorship/v1/users
端点
此端点允许
- 搜索所有可以归属到内容的用户
- 创建访客作者
authorship
字段
此字段添加到所有支持的帖子类型(默认为具有 author
帖子类型支持的帖子),例如 wp/v2/posts
。此字段是可读和可写的,接受并提供一个数组,包含归属到帖子的用户ID。
此外,如果设置了 _embed
并且认证用户可以列出用户,则用户对象嵌入在响应的 _embedded['wp:authorship']
字段中。
WP-CLI
作者身份实现了用于帖子迁移的自定义标记。以下WP-CLI标记可用
--authorship
--authorship
标记
在创建或更新帖子时,可以使用 --authorship
标记指定归属到帖子的用户ID。标记接受以逗号分隔的用户ID列表。示例
wp post create --post_title="我的新帖子" --authorship=4,11
wp post update 220 --authorship=13
如果没有设置此标记
- 在创建新帖子时,如果设置了
--post_author
标记,则它将用于归属作者 - 在更新现有帖子时,不会更改归属作者
迁移现有帖子上的WordPress作者。
如果您在一个现有网站上激活了作者身份,所有已创建的内容将不会为旧内容设置作者身份数据。这会破坏作者存档页面等问题。
此命令将为所有没有作者身份用户的帖子设置WordPress作者作为作者身份用户。(可选地,您可以覆盖任何现有的作者身份数据,使用WordPress帖子作者更新它)。
wp authorship migrate wp-authors --dry-run=true
默认情况下,此命令将执行干运行,设置 --dry-run=false
将更改数据库。
除非设置了 --overwrite-authors=true
标记,否则此命令不会覆盖或更新作者身份数据。
PublishPress Authors迁移
作者身份提供了一个命令,用于使用PublishPress Authors的数据创建作者身份数据。这允许从PublishPress Authors进行无损迁移。
当两个插件都激活时,此命令将复制PPA数据到作者身份
wp authorship migrate ppa --dry-run=true
默认情况下,该命令将执行干运行,设置 --dry-run=false
将对数据库进行更改。不存在用户身份的访客作者将使用空电子邮件和随机密码创建。
除非设置了 --overwrite-authors=true
标记,否则此命令不会覆盖或更新作者身份数据。
电子邮件通知
作者身份本身不会发送任何电子邮件通知,但它确实指示WordPress核心在适当的时候将电子邮件发送到归因作者。
- 当一篇帖子上的评论被保留以供审核时,评论审核电子邮件也会发送给所有具有审核评论能力和有效电子邮件地址的归因作者。
- 当一篇帖子上的评论被发布时,评论通知电子邮件也会发送给所有具有有效电子邮件地址的归因作者。
此插件仅调整发送这些电子邮件的电子邮件地址列表。如果您想完全禁用这些电子邮件,请参阅WordPress的“设置”->“讨论”屏幕中的“邮件我”部分。
无障碍
作者身份旨在符合Web内容可访问性指南(WCAG)2.1的AA级,但尚未完全实现。如果您的组织需要完全支持辅助技术,则作者身份在其当前状态下可能不是一个好的选择。
关于帖子编辑屏幕上的作者选择控制
- ✅ 可视样式继承自WordPress核心,且符合WCAG 2.1 AA标准
- ✅ 只使用键盘即可完全访问该控制
- 🚫 键盘控制不够直观
- 🚫 使用屏幕阅读器时,控制无法完全访问
团队正在积极调查替换用于渲染控制组件的完全可访问组件,或修复当前组件的辅助功能问题。
安全、权限和隐私
我们非常注重确保作者身份不会更改您网站编辑内容或查看敏感用户数据所需的用户权限。它 确实 做的是
- 授予被归因于帖子的用户编辑该帖子的能力(如果他们的权限允许)
- 授予用户创建和分配访客作者到帖子的能力
- 允许通过自定义权限以粒度级别更改此行为
分配归因
更改帖子归因所需的能力与WordPress核心更改帖子作者所需的能力相匹配。这意味着用户需要具有对帖子类型的 edit_others_post
权限。结果是,在将帖子归因于另一个用户方面,与WordPress核心的行为没有变化。
- 管理员和编辑人员可以更改帖子的归因作者
- 作者和贡献者不能更改归因作者,在编辑帖子时只能看到只读列表
作者身份允许更改任何具有对 author
的帖子类型的归因,默认情况下是帖子页面。
编辑帖子
当用户被归因于帖子时,该用户可以像帖子作者一样根据其权限管理该帖子。这意味着
- 被归因于具有作者角色的用户的帖子可以由该用户编辑、发布和删除
- 被归因于具有贡献者角色的用户的帖子可以在草案状态下由该用户编辑,但不能发布,且一旦发布就不能编辑
从实际角度来看,此功能仅影响具有作者或贡献者角色的用户。管理员和编辑人员默认情况下可以编辑其他用户的帖子,因此可以编辑、发布和删除帖子,无论它们是否被归因于它。
搜索用户
authorship/v1/users
REST API 端点提供了一种在网站上搜索用户并将其分配给帖子的方法。访问此端点权限授予所有能够更改指定帖子类型作者归属的用户,默认情况下是编辑和管理员。此端点的结果是与 WordPress 核心在用户搜索功能上没有变化。
此外,此端点设计为仅暴露用户的最小信息,例如不暴露电子邮件地址或能力。这使得具有作者等较低级别角色的用户能够在不无意中暴露其他用户敏感信息的情况下,授予将用户分配给帖子的能力。
创建嘉宾作者
authorship/v1/users
REST API 端点提供了一种创建可随后分配给帖子的嘉宾作者的方法。访问此端点的权限授予所有能够编辑他人帖子的人员,默认情况下是编辑和管理员。
关于后续编辑嘉宾作者的能力,还有更多工作要做,但值得注意的是,这是 Authorship 与 WordPress 核心默认能力不同之处。它允许编辑角色用户创建新的用户账户,而他们通常不能这样做。然而,这是紧密控制的
- 除非用户有
create_users
能力,否则无法提供电子邮件地址,只有管理员才有 - 无法提供用户角色,它始终设置为嘉宾作者
能力自定义
以下自定义用户能力由 Authorship 使用。这些能力可以授予或拒绝给用户或角色,以调整用户访问
attribute_post_type
- 在将用户分配给特定帖子类型时使用
- 默认映射到帖子类型的
edit_others_posts
能力
create_guest_authors
- 在创建嘉宾作者时使用
- 默认映射到
edit_others_posts
贡献
欢迎代码贡献、反馈和功能建议。有关详细信息,请参阅 CONTRIBUTING.md
团队
Authorship 由 Human Made 和 Altis 开发和维护。其初始开发由 Siemens 资助。
许可证
此程序是免费软件;您可以在自由软件基金会的 GNU 通用公共许可证的条款下重新分发和/或修改它;许可证版本 3,或(根据您的选择)许可证的任何较新版本。
此程序是免费软件;您可以在自由软件基金会的 GNU 通用公共许可证的条款下重新分发和/或修改它;许可证版本 3,或(根据您的选择)许可证的任何较新版本。希望它对您有所帮助,但没有任何保证;甚至没有关于其商销性或适用于特定目的的暗示性保证。有关详细信息,请参阅 GNU 通用公共许可证。
替代方案
如果 Authorship 插件不符合您的需求,请尝试以下这些替代方案