文章内容
一、WP插件常识
Hook(钩子)是WordPress提供的,允许你的插件“勾入”WordPress的程序,或者说,可以在特定时候执行你插件中的函数,从而使得你的WordPress插件执行。
1、两种hook
- Action:Action(动作)是WordPress程序核心在程序执行的特殊点(特定事件发生)加载的。使用Action API,你的插件可以在这些特殊点执行一个或者多个在插件中编写的PHP函数。
- Filter:Filter(过滤器)是WordPress加载的,当文本被存入网站数据库或发送到浏览器之前,Filter可用来对其进行多种类型的处理。使用Filter,你的插件可以使用定义在其中的PHP函数来对文本进行多种处理。
二、WP插件类型
WP插件可以是一个PHP文件,也可以是一个文件夹。
三、WP识别插件的方法
1、插件名字:必须唯一
2、插件标准头信息
1 2 3 4 5 6 7 8 | /* Plugin Name: all in one simple Plugin URI: https://blog.ntan520.com Version: V1.01 Author: 梓潼Blog Author URI: https://blog.ntan520.com Description: 梓潼Blog all in one seo插件 */ |
3、如果要上传到插件库,需要有一个标准的txt
4、WP插件操作方法
- add_action():动作。运行过程中执行函数
- Add_filter():过滤器。Filter建立在数据库到浏览器之间的处理。运行之前执行函数处理数据。例如:获取文章摘要,就先把整个文章处理成摘要后,再输出。
四、WP插件制作步骤
1、第一步:注册插件菜单项
1)在“设置”中添加一个菜单
1 2 3 | function show_menu(){ add_options_page( '浏览器头部显示标题' , '设置栏名称' , 8, __FILE__ , '调用其它函数的名称' ); } |
代码中的8是当前函数被执行的顺序(默认为10)。该参数指定的更小的数字会被更早的执行
2)在左侧菜单中直接显示
1 2 3 4 | function show_menu(){ add_menu_page( $page_title , $menu_title , $capability , $menu_slug , $function , $icon_url , $position ); add_submenu_page( $parent_slug , $page_title , $menu_title , $capability , $menu_slug , $function ); //二级菜单 } |
2、第二步:设置处理机制
1 2 3 4 5 | if ( is_admin() ){ //判断是不是后台管理页 add_action( 'admin_menu' , 'show_menu' ); //在登录后台后调用show_menu函数 add_action( 'admin_init' , 'register_mysettings' ); //在登录后台后调用register_mysettings函数 add_filter( 'wp_head' , 'showall' ); //在网站前台调用wp_head()时,调用showall函数 } |
3、第三步:设置处理功能函数
1)使用register_setting自动在数据表wp-options里添加二个参数keyword和des,并且添加通过表单添加值
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | function register_mysettings() { register_setting( 'myoption-group' , 'keyword' ); register_setting( 'myoption-group' , 'des' ); } <form method= "post" action= "options.php" > <?php settings_fields( 'myoption-group' ); ?> //与上面的函数建立关联 <table class = "form-table" > <tr valign= "top" > <th scope= "row" >关键字:</th> <td><input type= "text" name= "keyword" size= "100" value= "<?php echo get_option('keyword'); ?>" /></td> </tr> <tr valign= "top" > <th scope= "row" >描述:</th> <td><input type= "text" name= "des" size= "100" value= "<?php echo get_option('des'); ?>" /></td> </tr> </table> <p class = "submit" > <input type= "submit" class = "button-primary" value= "<?php _e('保存设置') ?>" /> </p> </form> |
2)获取wp-options里参数值,然后输出html代码
1 2 3 4 5 6 | function showall(){ $keywords =get_option( 'keyword' ); $description = get_option( 'des' ); echo "<meta name=" . '"keywords"' . " content=" . '"' . $keywords . '"' . " />" ; echo "<meta name=" . '"description"' . " content=" . '"' . $description . '"' . " />" ; } |
五、删除Action和Filter
在某些情况下,你会发现你希望你的插件屏蔽WordPress内建或者其他插件加入的Action或Filter。
你可以通过执行remove_filter(‘filter_hook’,’filter_function’)函数或者remove_action(‘action_hook’,’action_function’)函数来实现。
举例来说,remove_action(‘publish_post’,’generic_ping’);会使得你在发表新日志时不发送日志引用(ping)。
六、相关链接
1、插件开发文档
2、官网插件API文档
3、Filter参考文档
WordPress插件开发:Plugin API/Filter中文版文档
4、Action参考文档
WordPress插件API/Action Reference中文版文档