人工制造 / 孤儿命令
WP-CLI命令,用于列出和删除孤儿WordPress实体和元数据。
Requires
- php: >=7.2
- composer/installers: ^1.0 || ^2.0
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-07 15:44:26 UTC
README
WP-CLI命令,用于列出和删除孤儿WordPress实体和元数据。
介绍
WordPress提供专门的API,用于对各种核心数据结构进行CRUD操作。例如,当您通过wp_delete_comment( $comment_id, true )
删除评论时,WordPress会确保该评论的所有元数据也会自动删除。太棒了!
然而,人们并不总是做正确的事情——故意或无意。这可能是因为有人直接在数据库中删除实体和/或元数据(而不是使用相应的WordPress API来处理这些数据)。这可能在您想要减少大型生产或测试数据库导出时是有意义的,因此删除(随机的)帖子等。或者,也许有人只执行了部分数据库导入或迁移。随着时间的推移,您可能会得到一个充满孤儿条目的数据库。不存在评论的评论元数据、不存在帖子的评论,或者不存在帖子的修订版本。
孤儿命令提供了一个新的WP-CLI命令wp orphan
,让您可以轻松地查找或删除孤儿,如果您想的话。
目录
安装
Composer
使用Composer安装Composer
composer require humanmade/orphan-command
默认情况下,孤儿命令将被安装为WP-CLI包。但是,它也可以作为WordPress插件安装,例如,通过使用自定义安装路径。
手动
如果您不是通过Composer管理整个网站,您也可以将此存储库克隆到您的网站插件目录中。
cd /path/to/plugins
git clone git@github.com:humanmade/orphan-command.git
然后,安装并设置PHP自动加载
cd orphan-command
composer install --prefer-dist --no-dev
最后,转到您的网站“插件”页面,并激活孤儿命令。
要求
PHP
孤儿命令需要PHP 7.2或更高版本。
WordPress
孤儿命令需要WordPress 3.3或更高版本。
WP-CLI
孤儿命令需要WP-CLI 2.5或更高版本。
命令
通常,所有命令都支持以下三个操作
delete
:删除相应实体类型的所有孤儿。list
:列出相应实体类型的所有孤儿。query
:打印列出相应实体类型所有孤儿的MySQL查询。
默认情况下,list
的输出是逗号分隔的ID列表。这可以通过使用支持以下值的--format
选项来更改
count
:孤儿数量。csv
:将孤儿ID导出到CSV文件。- 示例用法:
wp orphan post list --format=csv > orphan-posts.csv
- 示例用法:
ids
:孤儿ID作为单个逗号分隔的字符串。json
:将孤儿ID导出到JSON文件。- 示例用法:
wp orphan post list --format=json > orphan-posts.json
- 示例用法:
table
:将孤儿ID以表格形式打印(只有一列)。yaml
:将孤儿ID导出到YAML文件。- 示例用法:
wp orphan post list --format=yaml > orphan-posts.yaml
- 示例用法:
一些命令支持额外的选项,这些选项在以下章节中解释。
wp orphan blog meta
wp orphan blog meta
命令允许您列出并删除所有引用已不再存在的 博客 的所有 博客元数据。
列出所有孤立的博客元数据
wp orphan blog meta list
删除所有孤立的博客元数据
wp orphan blog meta delete
wp orphan comment
wp orphan comment
命令允许您列出并删除所有引用已不再存在的 帖子 的所有 评论。
除了 --format
之外,wp orphan comment
命令还支持以下选项
--type
:以逗号分隔的评论类型 slug 列表。- 示例用法:
--type=comment
或--type=comment,reaction
- 示例用法:
列出所有类型的孤立评论
wp orphan comment list
列出所有孤立的反应
wp orphan comment list --type=reaction
删除所有类型的孤立评论
wp orphan comment delete
仅删除所有孤立的默认评论
wp orphan comment delete --type=comment
注意:由于评论可以嵌套(即,一个评论可以有父评论),孤立的评论也可能是引用不再存在的另一个评论的评论。但这不是此命令的功能。主要原因是一个引用不存在帖子的评论通常不会被网站访客看到。
Orphan Command 的未来版本可能允许列出/删除引用不存在父评论的评论。
wp orphan comment meta
wp orphan comment meta
命令允许您列出并删除所有引用已不再存在的 评论元数据。
列出所有孤立的评论元数据
wp orphan comment meta list
删除所有孤立的评论元数据
wp orphan comment meta delete
wp orphan post
wp orphan post
命令允许您列出并删除所有引用父 帖子 已不再存在的所有 帖子。
除了 --format
之外,wp orphan post
命令还支持以下选项
--type
:以逗号分隔的帖子类型 slug 列表。- 示例用法:
--type=post
或--type=post,page
- 示例用法:
列出所有类型的孤立帖子
wp orphan post list
列出所有孤立的页面
wp orphan post list --type=page
删除所有类型的孤立帖子
wp orphan post delete
仅删除所有孤立的默认帖子
wp orphan post delete --type=post
wp orphan post meta
wp orphan post meta
命令允许您列出并删除所有引用已不再存在的 帖子元数据。
列出所有孤立的帖子元数据
wp orphan post meta list
删除所有孤立的帖子元数据
wp orphan post meta delete
wp orphan revision
wp orphan revision
命令允许您列出并删除所有引用已不再存在的原始 帖子 的所有 修订版。
修订版是 WordPress 中包含的自定义帖子类型之一。由于具有不存在原始(父)帖子的修订版没有任何用途,并且存在专门的 API 用于修订版(例如,wp_delete_post_revision
),Orphan Command 提供了专门用于管理修订版的自定义命令。
列出所有孤立的修订版
wp orphan revision list
删除所有孤立的修订版
wp orphan revision delete
wp orphan term meta
wp orphan term meta
命令允许您列出并删除所有引用已不再存在的 术语 的所有 术语元数据。
列出所有孤立的术语元数据
wp orphan term meta list
删除所有孤立的术语元数据
wp orphan term meta delete
wp orphan user meta
wp orphan user meta
命令允许您列出并删除所有引用已不再存在的 用户 的所有 用户元数据。
列出所有孤立的用户元数据
wp orphan user meta list
删除所有孤立的用户元数据
wp orphan user meta delete
扩展孤儿命令
如果您想自定义或扩展 Orphan Command 的功能,您可以选择扩展实际的任何命令类,或者基于 Orphan Command 包含的 Orphan_Command
或 Orphan_Meta_Command
类编写自己的命令。
所有相关的类方法都标记为 protected
或 public
,因此您可以重新定义或装饰任何行为。例如,Orphan_Post_Command
类增强了 get_query
方法,以便在必要时注入传递给命令的帖子类型。
常见问题解答
术语怎么办?
关于术语,没有对“孤儿”的明确定义。孤儿术语可以按照以下几种方式之一进行定义
wp_terms
表中的一个条目,在wp_term_taxonomy
表中没有任何引用。(这通常不是你想要的,大多数情况下。)wp_term_taxonomy
表中的一个条目引用了一个不存在的术语(即wp_term_taxonomy.term_id
不存在于wp_terms.term_id
)。wp_term_taxonomy
表中的一个条目引用了一个不存在的父术语(即wp_term_taxonomy.parent
不存在于wp_terms.term_id
)。wp_term_relationships
表中的一个条目引用了一个不存在的对象。(这可能需要分类法,或者对象类型以使用所有已注册的分类法。)
在某种程度上,这与评论类似。然而,那里更多的是一个解释问题,这就是为什么孤儿命令默认将孤儿评论定义为引用不存在文章的评论。
孤儿命令的未来版本可能会允许列出/删除孤儿术语。
关于网站/网络元数据或选项呢?
WordPress 关于博客元数据、网络选项和网站元数据及选项的术语相当混乱!
一些事实
- 孤儿命令支持博客元数据。
- 选项位于每个网站专用的表中,这意味着不可能有任何孤儿选项。
- 虽然管理网站(即网络)元数据是有意义的,但孤儿命令目前不允许这样做。主要原因确实是防止人们意外删除错误的数据。
- 孤儿命令的未来版本可能会允许列出/删除网站元数据。
关于用例 XYZ 呢?
是的,关于孤儿数据和缺失的元数据,肯定有几种可能的用例。然而,这是故意的。
虽然列出所有未添加到任何网站的特定角色的用户,或删除所有具有特定状态的孤儿文章可能是个好主意,但这超出了范围。
孤儿命令提供了对很多人可能需要经常执行的任务的简单访问;没有更多。
话虽如此,你应该能够使用现有的 WP-CLI 命令,如 wp <entity> list|delete
或 wp db query
,轻松完成上述任何示例。
许可证
本程序是自由软件;您可以在自由软件基金会发布的 GNU 通用公共许可证的条款下重新分发和/或修改它;许可证的第 3 版,或者(根据您的选择)许可证的任何后续版本。
本程序按照希望它将是有用的,但没有任何保证;甚至没有关于适销性或特定用途的隐含保证。有关详细信息,请参阅 GNU 通用公共许可证。