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

大家好,
我是Mandai,Wild团队负责开发工作的成员。
在这个 Beyond 博客上,文章在发布前都会由作者以外的人进行双重审核,以确保没有技术或语法错误。
以前,我们会在 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 提供的功能,所以我想在这里解释一下。
此函数用于检索作者信息。author_id
包含在函数的第三个参数 $post 中,但关键的作者姓名不可用。
仅查看 ID 无法确定作者是谁,因此这里有一个函数可以从 author_id 获取各种信息。
该函数的第一个参数设置为您要查找的信息的键。
键有很多种,但我找到一个网站列出了所有键,所以我会附上链接。
add_action() 函数
即使你创建了一个函数,除非你设置一个钩子来指定它的执行时机,否则它也不会运行。`add_action
()` 函数用于将函数注册到该钩子。
当 do_action() 函数执行时,如果该函数的第一个参数的值与 add_action() 函数注册的函数的值相同,则该函数将被执行。
也就是说,do_action() 函数安装在多个位置,允许您在不同时间挂钩处理过程。
这次我们挂钩的“transition_post_status”操作会在文章状态改变时被调用。
然而,文章状态实际上有很多种,而且我们知道状态改变前后的操作组合,所以我们只在状态从草稿变为待审核时才进行处理。
概括
WordPress 不断添加新功能并扩大规模,这乍一看可能会让人望而生畏,但只要上网搜索,就能轻松找到相关信息,所以我认为您可以放心地进行自定义设置。
而且令人惊讶的是,自定义其实很简单!
难怪这么多人使用它。
结果非常成功,我感觉很好,所以一时冲动就写了这篇文章。
就这样。
0
