WordPress发布文章的一些动作钩子

WordPress常用的有两种钩子,过滤钩子add_filter和动作钩子add_action,它们是WordPress插件机制中非常重要的两个函数。过滤钩子用来创建一个过滤器,让其它的主题和插件对一个值进行修改过滤;动作钩子核心代码跟过滤钩子差不多,但是没有返回值,单纯的就是在特定的地方执行插件或者主题开发者挂载的函数。

wordpress hooks

在开发WordPress博客同步到CSDN插件时,需要在WordPress发布文章后,加入一些动作钩子函数,实现同步发布到其它博客平台的功能,但同时又要避免修改文章后的重复发布。最早版本用的是publish_post和xmlrpc_public_post这两个函数,结合发布时间判断,实现了基本的功能;随后又加入了publish_future_post来支持晚于当前时间的定时发布功能,但对于将定时发布时间设在当前时间之前的,就没法同步了。为了解决这个问题,今天又查了一些资料,最后用transition_post_status替换了上面提到的几个钩子,完美实现了定时发布后的文章同步问题,值得记录一下。

首先需要了解的是动作钩子的用法和参数:

<?php
add_action( $tag, $function_to_add, $priority = 10, $accepted_args =1);
?>

$tag是所挂载的动作钩子(action hooks)的名称,就是WordPress核心调用do_action()时一些可以触发的动作,用来确定挂载函数的位置,在官方Plugin API/Action ReferenceWordPress Hooks Database上可以查看动作钩子列表;$tag也可以是一个主题或插件文件内部的一个动作,或者特定的标签“all”,这个函数将被所有的钩子调用。

$function_to_add是你挂载的函数,用来实现期望添加的功能。

$priority是可选项,用于指定和特定的动作相关联函数的执行顺序,数字越小,执行越早,默认值为10。

$accepted_args也是可选项,用于标识挂钩函数所接受的参数数量,默认值为1。

然后为了便于了解下面那些发布文章时会被触发的钩子,先简单介绍下几个涉及到的属性值:

$post为文章对象;$post_ID为文章ID;$post_status为文章对象的发布状态(包括new,publish,future,draft,pending,private,trash,auto-draft等);$post_type为文章对象的发布类型(包括post,page,attachment,revision等)。

最后就是相关的动作钩子:

publish_post:参数一个($post_ID),点击发布文章时就会被触发;
save_post:参数一个($post_ID),发布或更新文章时就会被触发;
edit_post:参数两个($post_ID, $post),只要编辑已经存在的文章就会被触发;
publish_future_post:参数一个($post_ID),到定时发布文章设定的时间点就会被触发,如果设定的时间早于发布时间,不会被触发;
transition_post_status:参数三个($new_status, $old_status, $post),实现功能比较强大,可以根据文章发布状态的变化实现一些功能。
{$old_status}to{$new_status}:参数一个($post),比如draft_to_publish是通常的文章发布事件,future_to_publish则可以用来处理定时文章发布事件。
post_updated:参数三个($post_ID, $post_after, $post_before),已存在文章更新了就会被触发。

对比上面的函数说明可以发现,post_updated事件是最强大的,可以获取到文章修改前后的所有内容,参数较多;其次是transition_post_status事件,功能也比较强;接着是{$old_status}to{$new_status}事件,针对性较强,可以对特定情况进行事件抓取;而publish_postsave_postedit_postpublish_future_post这四个事件就相对比较简单,可以视情况而用。

WordPress中有关发布、编辑文章的代码主要在文件/wp-includes/post.php里,主要函数有wp_update_post、wp_insert_post等,有兴趣可以去细细看下源码或者官方网站上的相关文档,一定会收获不少的。

最后的最后,如果你也有同步文章的需求,记得去试下WP2CSDNBlog插件,目前已经支持同步CSDN、新浪和网易博客了,好用的话记得给个好评喔!

查看原文:http://xuhehuan.com/2173.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,376评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,126评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,966评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,432评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,519评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,792评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,933评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,701评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,143评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,488评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,626评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,292评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,896评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,494评论 2 348

推荐阅读更多精彩内容

  • 过滤器 Filters 过滤器钩子和动作钩子有很大的区别。它让你可以控制代码的输出。 apply_filters(...
    StevenQin阅读 644评论 0 0
  • 动作钩子 ( actions ) 动作钩子让你可以在 WordPress 加载过程中或者当某个事件发生的特定时刻触...
    StevenQin阅读 482评论 0 0
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,629评论 18 139
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,763评论 0 38
  • 我觉得 丢东西 是因为 想要的东西太多 是“贪”的体现 @学霸猫老师一句话点醒了我,这件事其实是我做人生最重要的事...
    李智阅读 523评论 0 3