WordPress插件开发:教你怎么开发WordPress插件

一、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、插件标准头信息

/*
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)在“设置”中添加一个菜单

function show_menu(){
add_options_page('浏览器头部显示标题','设置栏名称', 8, __FILE__, '调用其它函数的名称');
}

代码中的8是当前函数被执行的顺序(默认为10)。该参数指定的更小的数字会被更早的执行

2)在左侧菜单中直接显示

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、第二步:设置处理机制

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,并且添加通过表单添加值

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代码

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、插件开发文档

Plugin Handbook

2、官网插件API文档

WordPress插件开发API文档中文版

3、Filter参考文档

WordPress插件开发:Plugin API/Filter中文版文档

4、Action参考文档

WordPress插件API/Action Reference中文版文档

5、主题开发文档

Theme Handbook

发表评论