5ucms论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 11206|回复: 3
打印 上一主题 下一主题

[插件/开发] wordpress插件开发教程02 钩子的操作

[复制链接]

670

主题

785

帖子

8273

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8273
跳转到指定楼层
楼主
发表于 2021-5-28 22:32:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一、认识钩子
添加动作:add_action 与 执行动作:do_action
在上一节,我们学习到了在数据库option表里插入、删除数据,这一节我们讲把这个插入的值显示出来

  1. //打印option表里的qss_copyright_text字段对应的内容
  2. function qss_copyright_insert(){
  3.     echo get_option("qss_copyright_text");
  4. }
  5. //通过钩子执行上方函数
  6. add_action("wp_footer","qss_copyright_insert");
复制代码


这个钩子的方法在/wp-includes/general-template.php里
通过模板fooer.php中的 do_action('wp_footer')起作用 所有add到这个钩子上的都执行 所以你可以再复制改改,执行另一条类似的挂载到底部去


  1. //也可以直接echo打印内容哦
  2. function qss_copyright_insert2(){
  3.     echo '我是第二次执行啦';
  4. }
  5. //通过钩子执行上方函数
  6. add_action("wp_footer","qss_copyright_insert2");
复制代码
回复

使用道具 举报

670

主题

785

帖子

8273

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8273
沙发
 楼主| 发表于 2021-5-28 22:49:53 | 只看该作者
常用的钩子有
wp_head 头部head区插入,通过模板中的wp_head()
wp_footer 底部插入,在body区底部了
WP有上千个钩子,要学会查阅:https://codex.wordpress.org/Plugin_API/Action_Reference 红色的为有更新成其他的或弃用
回复 支持 反对

使用道具 举报

670

主题

785

帖子

8273

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8273
板凳
 楼主| 发表于 2021-5-28 22:51:51 | 只看该作者
二、带参数的钩子
add_action(要挂的钩子,要执行在这个钩子下的函数,执行先后顺序[不写则按你写代码的前后顺序来]大的靠前,要执行的这个函数可以传入的最大参数数量);

  1. function save_post_meta($post_id,$post){
  2.         update_post_meta($post_id,"save-time","更新时间:".date("Y-m-d h:i:s"));//更新文章自定义栏目
  3. }
  4. do_action( 'save_post', 'save_post_meta',10,2);
复制代码

回复 支持 反对

使用道具 举报

670

主题

785

帖子

8273

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
8273
地板
 楼主| 发表于 2021-5-29 07:22:18 | 只看该作者
三、常用的动作实用案例
1、在加载过程中的例子

  1. //给页面管理添加摘要功能
  2. function qss_add_excerpts_to_pages(){
  3.     add_post_type_support('page',array('excerpt'));
  4. }
  5. add_action ('init','qss_add_excerpts_to_pages');
复制代码


wp_head()函数触发,一般用于在<head>标签内输出内容
WP页面判断函数大全:http://bbs.5ucms.com/thread-834-1-1.html
  1. //只有首页额外输出一段描述
  2. function qss_wp_head(){
  3.    if(is_home){//判断是否为首页
  4.          ?><meta name="description" content="<? bloginfo('description'); ?>" /> <?
  5.    }
  6. }
  7. add_action ('wp_head','qss_wp_head');
复制代码


wp_enqueue_scripts()函数,添加head区内的js、css文件
plugins_url()函数指当前插件所在目录
这里可以加一些判断页面的if结合
  1. function qss_addcss()
  2.   wp_enqueue_style('qss-add-css',plugins_url('css/qss_test.css'),__FILE__), false );
  3. }
  4. function qss_addjs()
  5.   wp_enqueue_style('qss-add-js',plugins_url('css/qss_test.js'),__FILE__), false );
  6. }
  7. add_action ('wp_enqueue_scripts','qss_addcss');
  8. add_action ('wp_enqueue_scripts','qss_addjs');
复制代码

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|5ucms.com

GMT+8, 2024-6-17 03:18 , Processed in 0.046875 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表