一个关于我在 WordPress 上进行的一些小定制的故事

你好。
我是Mandai,负责Wild 开发团队。
在 Beyond Blog 上,文章发布前会经过一个流程:由作者以外的人进行双重审核,以确保没有技术或语法错误。
以前,我会在 Chatwork 上发信息,比如“这篇文章是我写的,请看看”,但我觉得每次发帖后都去 Chatwork 上汇报很麻烦,所以我临时写了一个脚本,当有文章待审核时,脚本会自动请求审核。
你做了什么?
在您完成博客文章的写作后,我们添加了一个功能,可以将状态从“草稿”更改为“等待审核”,并通过 Chatwork API 发布审核请求。
以下是我通过程序实现的操作:
- 检查博客文章的转换状态
- 收集有关文章和作者的信息。
- 通过 POST 请求 Chatwork API
就这样。
这就是做好的酱汁。
/** * 待审核的博客帖子 */ function announce_blog_status_in_review($new_status, $old_status, $post){ if ($old_status != 'pending' && $new_status == 'pending'){ $cw_room_id = 'XXXXXXXX'; $cw_api_key = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'; $cw_to = 'xxxxxxxx'; $cw_target_url = 'https://api.chatwork.com/v2/rooms/'. $cw_room_id. '/messages'; $blog_title = wp_specialchars_decode($post->post_title, ENT_QUOTES); $blog_author = wp_specialchars_decode(get_the_author_meta('last_name', $post->post_author), ENT_QUOTES); $message = "[info][title]评论已添加[/title]\n"; $message.= "[收件人:$cw_to]博客大叔\n"; $message.= "$blog_author. "正在等待您的博客评论!\n"; $message.= "标题:". $blog_title. "\n"; $message.= "URL:$post->guid[/info]"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $cw_target_url); curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-ChatWorkToken: '. $cw_api_key)); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, array('body' => $message)); curl_exec($ch); } } add_action('transition_post_status', 'announce_blog_status_in_review', 10, 3);
为了实现这一点,我需要了解一些 WordPress 提供的功能,所以我想在这里解释一下。
此函数用于检索作者信息。
函数的第三个参数 $post 包含 author_id,但作者姓名未知。
仅查看 ID 无法确定作者是谁,因此这里有一个函数可以从 author_id 获取各种信息。
将你想要获取的信息的键值设置为函数的第一个参数。
键值有很多,但我找到一个网站汇总了所有键值,所以我会在这里附上链接。
add_action() 函数
即使你创建了一个函数,除非你设置一个钩子来确定它的执行时机,否则它也不会被执行。`add_action
()` 函数就是用来将函数注册到该钩子的。
当 do_action() 函数执行时,如果该函数的第一个参数的值与 add_action() 函数注册的函数的值相同,则该函数将被执行。
也就是说,do_action() 函数安装在多个位置,允许您在不同时间挂钩处理过程。
这次我们挂钩的 action“transition_post_status”会在文章状态改变时触发。
但是,实际上文章状态有很多种,而且我们知道状态改变前后触发的 action 组合,所以我们将其设置为仅在文章状态从草稿变为待审核时才执行。
概括
WordPress 不断添加新功能,规模也越来越大,所以一开始可能会让人觉得有点复杂,但只要你做一些研究,很快就能找到相关信息,所以我觉得你可以轻松自定义,不用太担心。
而且它的自定义功能出乎意料地简单!
难怪这么多人使用它。
结果非常成功,我感觉很好,所以一时冲动就写了这篇文章。
就是这样。
0