在WordPress的文章列表中,存在一个名为快速编辑的功能,此功能允许对文章的标题、别名、分类及标签等属性进行迅速调整。该功能对于内容管理系统(CMS)来说极具实用性。然而,它也被继承到了自定义文章类型中。在某些场景下,如我们设立的用于接收用户咨询信息的“Message”文章类型,此功能可能不必要,甚至可能导致操作困扰。为了仅使客服人员能查看而非编辑这些信息,需要禁用快速编辑功能。以下代码段展示了如何实现这一需求。
禁用特定文章类型的快速编辑功能:
add_filter('post_row_actions', function ($actions = [], $post = null)
{
// 如果不是我们需要的文章类型,直接返回
if (!in_array(get_post_type($post), ['message'])) {
return $actions;
}
// 判断文章类型并移除快速编辑链接
if (isset($actions[ 'inline hide-if-no-js' ])) {
unset($actions[ 'inline hide-if-no-js' ]);
}
// 返回删除了快速编辑操作后的链接数组
return $actions;
}, 10, 2);
在WordPress中,如果当前文章类型非“message”,则直接返回操作列表。针对特定类型“message”的文章,系统将检查并删除快速编辑链接。具体地,如果操作列表包含,该链接将被移除。完成这些步骤后,函数将返回更新后的操作列表。这一功能主要应用于WordPress的默认文章内容管理界面中。
在探讨WordPress的功能实现时,我们注意到一个关键机制:通过`post_row_actions`过滤器修改`$actions`数组来实现特定的功能。要了解`$actions`数组包含的操作及其可禁用项,需查阅WordPress源代码。我们发现以下操作可供禁用,并可根据需求替换代码中的相应操作名称以取消特定功能:
[
'view',
'edit',
'inline hide-if-no-js',
'delete',
'trash',
'untrash',
]
查看、编辑、内联(仅在启用JavaScript时显示)、删除、移至回收站、恢复回收站项目。此外,一些插件可能会向文章列表添加自定义操作,通过搜索`post_row_actions`可以识别并处理这些插件定义的自定义操作。