WordPress插件制作教程(七): 插件函数之动作(Actions)函数

六月 04
磊子 2012年 4 条评论

上一篇对WordPress插件过滤器函数做了下介绍,这篇在介绍下动作(Actions)函数。

动作 (Action)函数 是 WordPress 运行到某些环节,或者在某些事件发生时,就会被执行的一种挂钩。任何的插件都可以通过动作接口来指示系统在遇到这些环节或者事件的时候,就执行指定的 PHP 函数。 是由 WordPress 内部的某些事件所触发的,比如说发表一篇文章、更换主题或者访问后台的某个管理界面,这些都是一件事件的例子。而插件则可以指定某些 PHP 函数来响应这些事件所触发的动作。例如:

  • 修改数据库数据
  • 发送电子邮件
  • 修改即将显示出来的内容

1.在插件代码中定义当某个事件发生时,需要执行的 PHP函数

例如:

function email_friends($post_ID)  {
    $friends = 'favortt1@126.com,favortt2@126.com';
    mail($friends, "执行的函数例子",
      '这个是测试内容');
    return $post_ID;
}

注意:在插件内定义函数时,函数名称必须保持唯一性。

2.用add_action() 把这个函数注册到动作执行挂勾上

定义完动作响应函数之后,下一步就得把这个函数挂载(或者说注册)到 WordPress 里面去。做法是在插件中调用 add_action() 函数,如下:

add_action ('hook_name', 'your_function_name', [priority], [accepted_args] );
hook_name
WordPress 所提供的动作名,用于标识在哪个动作发生时,执行响应函数.
your_function_name
当动作 hook_name 发生时需要执行的响应函数的名字。可以是 PHP 标准的函数,或者是 WordPress 内置函数,或者是插件内自定义的函数,例如上述例子中的 'email_friends'
priority
这是一个可选的参数,默认值为10。由于可以把多个函数注册到同一个动作,所以这个参于是用于指定注册到这个动作中的这个函数执行的优先级,数字越小优先 级越高,执行得也越早,反之亦然。如果若干个函数以相同的优先级注册到同一个动作,那么执行顺序则是由它们注册的先后顺序所决定。
accepted_args
这是一个可选的参数,确认值是1。由于某些动作可能会把多个参数传给响应函数,所以这个有时候需要指定响应函数能接受多少个参数。这个参数是在 1.5.1 版加进去的。

通过这个函数我们就可以把上面的例子添加一个动作。

add_action ( 'publish_post', 'email_friends' );

3.把插件源码文件放到 WordPress 插件目录,然后激活插件

WordPress动作(Actions)函数就为大家简单介绍一下。大家如果查看这些过插件动作函数的可以来磊子的WordPress函数文档里面查看。

» 版权所有©转载必须以链接形式注明作者和原始出处:磊子的博客 » WordPress插件制作教程(七): 插件函数之动作(Actions)函数
» 地址:( Ctrl+C 复制 )
» 如果对本站感兴趣,请到网站右下方订阅本站,将为你带来更多精彩和实用的文章
» 如果您对这篇文章感兴趣,不妨小小的 捐助(Donate)一下博主吧,不管多少都是对博主最大的支持和鼓励哟,博主-磊子感谢大家的支持!!!

4 条留言 其中:访客:3 条, 博主:1 条

  1. wmtimes说:

    不错,学习下,wp的函数都不太懂。

  2. DHA说:

    终于赶上前面了,第一次。不过函数还是不太懂,一直用的插件

  3. 高高说:

    雷子请教个问题,我在网上找了个代码,给tags添加图标,我想用同样的方法给分类添加图标,可是弄了半天没成功,能不能帮忙给看看,给段完整的代码,先谢谢了,我想用这种方法实现知更鸟主题侧边栏推荐栏目的效果

    第一步:在wordpress循环中加入以下php代码:

    $posttags = get_the_tags();
    if ($posttags) {
    foreach($posttags as $tag) {
    echo ‘term_id . ‘” href=”‘.get_tag_link($tag).’”>’. $tag->name .’‘;
    }
    }
    第二步:在css文件中设置背景图:

    .tag-link{color:#888;border:solid 1px #d6d6d6;border-radius:2px;box-shadow:0 1px 1px #eee;padding:2px 6px;margin-right:4px;display:inline-block;}
    .tag-link:hover{background-color: #fbfbfb;border-color:#bbb;color: #444;box-shadow:0 1px 1px #ddd}

    .tag-link-101,.tag-link-23{background-image:url(../img/tag.png);background-repeat:no-repeat;padding-left:25px}
    .tag-link-101{background-position:4px 3px}
    .tag-link-23{background-position:4px -17px}

说点什么吧




订阅本站