本地路径
<?php echo plugin_dir_path(__FILE__);?>
把 PHP 常量 FILE 传递给了 plugin_dir_path() 函数。这会生成指向你的插件目录的完整的本地路径。/public_html/wp-content/plugins/my-custom-plugin/
<?php echo plugin_dir_path(__FILE__).'js/scripts.js';?>
这段代码会输出下面的结果:/public_html/wp-content/plugins/my-custom-plugin/js/scripts.js
URL路径
- plugins_url() — 插件目录的 URL (例如:http://example.com/wp-content/plugins)
- include_url() — includes 目录的 URL (例如:http://example.com/wp-includes)
- content_url() — content 目录的 URL (例如:http://example.com/wp-content)
- admin_url() — admin 目录的 URL (例如:http://example.com/wp-admin/)
- site_url() — 当前网站的 URL (例如:http://example.com)
- home_url() — 当前网站首页的 URL (例如:http://example.com)
- site_url() 和 home_url() 很相似,容易混淆。
site_url() 返回的是数据库中 wp_options 表里面的 siteurl 字段值。这是指向 WordPress 核心文件的 URL。如果你的 WordPress 核心文件在你的服务器的子目录中,比如 /wordpress,那么 site_url() 的值就会是 http://example.com/wordpress 。
home_url() 则从 wp_option 表中取得 home 字段的值。这个地址是你希望访问你的 WordPress 网站的 URL 地址。例如,你的 WordPres 核心文件放在 /wordpress 目录下,但是你希望你的 URL是 http://example.com,那么就要把 home 的值设置成 http://example.com。
plugins_url() 这个函数可以确定在插件目录下的任何文件的完全 URL。
<?php plugins_url( $path, $plugin ); ?>
参数:
- $path — (string)(可选) — 相对于 插件 URL 的路径
- $plugin — (string)(可选) — 要相对的插件文件(如果是自己,就传 FILE )
例如:要在插件中引用一个图片文件,可以这样子:
<?php echo '<img src="'.plugins_url('images/icon.png', __FILE__). '"/>';?>
第一个参数是要用到的图片文件的相对路径。第二个参数是要取相对路径时的参考文件,本例中直接是 —FILE。上面代码生成下面的 HTML 标签:
<img src="http://example.com/wp-content/plugins/my-custom-plugin/images/icon.png"/>
activate/deactivate 函数
register_activation_hook()
为插件设置一些默认选项。也可以验证插件和 WordPress 版本的兼容性。
这个插件接收两个参数:
<?php register_activation_hook( $file, $function ); ?>
参数:
$file — (string)(必须) — 主插件文件的路径。
$function — (string)(必须) — 当插件启用时要执行的函数。
下面是一个例子:
<?php
register_activation_hook( __FILE__, 'boj_install');
function boj_install()
{
if( version_compare( get_bloginfo( 'version' ), '3.1', '<' ) )
{
deactivate_plugins( basename( __FILE__ ));
//禁用插件
}
}
?>
我们使用 get_bloginfo() 函数来取得当前安装的 WordPress 版本号。接着用 PHP 函数 version_compare() 来验证安装的 WordPress 的版本是否至少为 3.1。如果低于 3.1,就调用 deactivate_plugins() 函数来 禁用插件。
在启用时进行默认设置
另一个常用的启用技术就是在你的插件启用时为它设置默认选项。假设你的插件有许多许多选项,也许有一些选择需要被设置才能保证插件正常工作。你可以再启动时自动设置默认值,而不用让用户跑到设置页面来亲自设置。
<?php
register_activation_hook( __FILE__, 'boj_install');
function boj_istall() {
$boj_myplugin_options = array(
'view' => 'grid',
'food' => 'bazon',
'mode' => 'zombie'
);
update_option( 'boj_myplugin_options', $boj_myplugin_options );
}
?>
}
register_deactivation_hook() 函数
这个函数在插件被禁用时触发。这个函数和前面的启用函数一页同样接收两个参数。
<?php register_deactivation_hook( $file, $function ); ?>
参数:
- $file — (string)(必须) — 主插件文件的路径。
- $function — (string)(必须) — 当插件禁用时要执行的函数。
下面是一个例子:
<?php
register_deactivation_hook( __FILE__, 'boj_myplugin_uninstall' );
function boj_myplugin_unstall() {
// 执行内容
}
?>
在禁用插件时执行 boj_myplugin_uninstall() 函数。
卸载的方法
uninstall.php
第一种方法:uninstall.php 文件:
<?php
// 如果 uninstall 不是从 WordPress 调用,则退出
if( !defined( 'WP_UNINSTALL_PLUGIN' ) )
exit();
// 从 options 表删除选项
delete_option( 'boj_myplugin_options' );
// 删除其他额外的选项和自定义表
?>
第一件要做的事就是验证确实是 WordPress 在调用 uninstall.php 文件。通过严重 WP_UNINSTALL_PLUGIN 常量是否定义。如果没有,立即退出。这是一个保证只有在删除插件时才能够执行 uninstall.php 文件的安全的方法。
在验证了这是合法的卸载调用以后,就可以从数据库中删除插件的设置项了。插件卸载脚本的目的是要从数据库中删除任何与插件相关的内容。这包括删除所有选项,已经删除所有自定义的表。你不需要操心删除插件的文件或者目录的事情,一旦卸载脚本执行了,WordPress 会自动为你做这些事情。
卸载钩子
卸载钩子
第二种可用的卸载方法叫做卸载钩子。如果你删除一个不存在 uninstall.php 的插件,WordPress 会执行卸载钩子(如果存在的话).
<?php register_uninstall_hook( $file, $function ); ?>
参数:
- $file — (string)(必须) — 插件主文件的路径
- $function — (string)(必须) — 在插件卸载后要执行的函数
下面看卸载函数的例子:
<?php
register_activation_hook( __FILE__, 'boj_myplugin_activate' );
function boj_myplugin_activate() {
// 注册卸载函数
register_uninstall_hook( __FILE__, 'boj_myplugin_uninstaller' );
}
function boj_myplugin_uninstaller() {
// 删除插件创建的选择,表等等
delete_option( 'boj_myplugin_options' );
}
?>
register_uninstall_hook() 必须在启用函数中调用。因此要在使用 register_activation_hook() 函数执行插件启用的函数中包含 uninstall 钩子。接着调用 uninstall 函数。注意:如果插件根目录下包含 uninstall.php 文件,那么删除钩子是不会执行的。
重要:要知道不能使用一个类的方法作为卸载钩子的回调函数。因为卸载钩子会保存一个 $this 的引用到数据库中,它多那个页面的加载来说是唯一的。
如本节中提醒的,使用卸载钩子有许多陷阱。所以最好使用更简洁的 uninstall.php 文件来进行卸载。
插件开发检查列表
在开发 WordPress 插件时,你需要记住许多事情来创建一个合适的插件基础。下面的列表帮助你完成这个过程。跟随这个列表,你就可以确保有一个合适的插件基础了:
1.确定一个具有描述性的唯一的插件名
1.1名字是否可以描述你的插件的功能
1.2是否验证了插件名在插件目录中不存在
2.为插件设置一个唯一的前缀
2.1前缀是否足够特殊来避免冲突
3.建立插件的目录结构
3.1是否需要 PHP 目录
3.2是否需要 JavaScript 目录
3.3是否需要 CSS 目录
3.4是否需要 images 目录
建立默认的插件文件
建立和插件文件夹名同名的主插件文件
建立 uninstall.php 文件来执行卸载过程
建立插件的头部代码
设置你希望显示的插件的名字
添加一个详细的插件目的的描述
设置正确的版本
确保设置了插件的 URI 和 作者的 URI 的值
包括版权信息
在插件头下面直接包含版权信息
建立插件的启用函数
你的插件功能的实现是否需要一个特殊的或者更高的 WordPress?
你的插件是否要在启用时设置默认值?
建立插件的禁用函数
你的插件是否要在禁用时执行神马东西?
建立插件的卸载脚本
建立 uninstall.php 文件
在文件中包含卸载脚本
文件引用
使用合适的目录常量和函数来确定 WordPress 和插件中的路径