一个关于我如何对 WordPress 进行一些定制的故事
你好。
我是Mandai,负责Wild 开发团队。
这个超越博客在发布之前经过了由作者以外的人进行双重检查的过程,以确保不存在技术或语法问题。
到目前为止,我们在Chatwork上进行了诸如“我写了这篇文章,所以检查一下”之类的交流,但我认为写完每篇文章后在Chatwork上进行报道会很痛苦,所以我在等待评论我写了一个脚本。我希望人们在时机成熟时进行检查。
你做了什么?
写完一篇博客文章后,我添加了一个功能,将状态从“草稿”更改为“等待审核”,并通过 Chatwork API 发布审核请求。
我正在以编程方式执行的操作如下。
- 检查博客文章的转换状态
- 收集文章信息和作者信息
- POST 到 Chatwork API
就这样。
这就是完成的酱汁。
/** * 发布等待审核的内容到 Chatwork */ functionannounce_blog_status_in_review($new_status, $old_status, $post){ if ($old_status != 'pending' && $new_status == 'pending'){ $cw_room_id = 'XXXXXXXX' ; $cw_api_key = 'XXXXXXXXXXXXXXXXXXXXX'; $cw_target_url = 'https://api.chatwork.com/v2/rooms/'. '/messages'; ->post_title, ENT_QUOTES); $blog_author = wp_specialchars_decode(get_the_author_meta('last_name', $post->post_author), $message = "[info][title]收到评论[/title]\ n"; .= "[To:$cw_to] 博客叔叔\n"; $message.= $blog_author. "正在等待您的博客被审核!\n"; $message.= "标题: "\ n"; $message.= "URL : $post->guid[/info]"; $ch =curl_init();curl_setopt($ch, CURLOPT_URL, $cw_target_url);curl_setopt($chcurl_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 变得越来越大,不断添加新功能,所以可能有点难以适应,但如果你研究一下,你会很快找到一些信息,所以我认为你可以放心地自定义它。
而且定制起来非常简单!
因为它被很多人使用。
我能够很好地做到这一点,感觉很好,所以我决定以很大的动力来写这篇文章。
就是这样。