wordpress插件开发实例

最近在研究WordPress的内部机制以及主题和插件的开发,下面将介绍如何开发出一个wordpress的插件,主要是介绍开发步骤,插件的功能不重要。当然,我在维护一个叫WP-Options-Manager的插件,主要管理的是用户WordPress后台的设置对应的数据表wp_options,基本功能维护的差不多了,有机会会提交到WordPress官方,也会发一篇文章,大家拭目以待。

开发插件准备工作

一般来说,都是在 wp-content\plugins 目录下建立一个文件夹,文件夹名就是插件的名称,我们插件名字为”Test Plugin”,那么就建一个test-plungin的文件夹,然后建一个test_plugin.php文件就可以了。
当然,这只是必须的文件,如果要提交到wordpress官方还需要readme.txt和预览图片等等,这些在此就不多说了。
《wordpress插件开发实例》

插件开发头部信息

一个插件开发最重要的是头部信息,只有这些WordPress才能识别一个插件。头部信息的格式为:

<?php
/*
Plugin Name: 插件名
Plugin URI: 插件的介绍或更新地址
Description: 插件描述
Version: 插件版本,例如 1.0
Author: 插件作者名称
Author URI: 插件作者的链接
*/
?>

其中各个信息的顺序没有要求,例子:

<?php
/**
 * Plugin Name:       Test Plugin
 * Plugin URI:        http://blog.shadowwu.club
 * Description:       Perhaps this is the best plugin in WordPress
 * Version:           1.0.0
 * Author:            影梧
 * Author URI:        http://blog.shadowwu.club
 */

?>

《wordpress插件开发实例》

可以看到这已经是一个插件的模样了,不过这个插件什么作用也没有。

插件功能

此插件的功能就是点击设置的时候弹出一个消息,并且可以设置弹出的消息内容。
全部代码为:

<?php
/**
 * Plugin Name:       Test Plugin
 * Plugin URI:        http://blog.shadowwu.club
 * Description:       Perhaps this is the best plugin in WordPress
 * Version:           1.0.0
 * Author:            影梧
 * Author URI:        http://blog.shadowwu.club
 */


/* 注册激活插件时要调用的函数 */ 
register_activation_hook( __FILE__, 'display_test_install');   

/* 注册停用插件时要调用的函数 */ 
register_deactivation_hook( __FILE__, 'display_test_remove' );  

function display_test_install() {  
    /* 在数据库的 wp_options 表中添加一条记录,第二个参数为默认值 */ 
    add_option("display_test_text", "这是影梧的Test插件", '', 'yes');  
}

function display_test_remove() {  
    /* 删除 wp_options 表中的对应记录 */ 
    delete_option('display_test_text');  
}
if( is_admin() ) {
    /*  利用 admin_menu 钩子,添加菜单 */
    add_action('admin_menu', 'display_test_menu');
}
function display_test_menu() {
    /* add_options_page( $page_title, $menu_title, $capability, $menu_slug, $function);  */
    /* 页名称,菜单名称,访问级别,菜单别名,点击该菜单时的回调函数(用以显示设置页面) */
    add_options_page('Set Test Plugin', 'Test Plugin Setting', 'administrator','display_test', 'display_test_html_page');
}

function display_test_html_page() {
    ?>
    <?php display_test(); ?>
    <div>  
        <h2>Set Test Plugin</h2>  
        <form method="post" action="options.php">  
            <?php /* 下面这行代码用来保存表单中内容到数据库 */ ?>  
            <?php wp_nonce_field('update-options'); ?>  

            <p>  
                <textarea  
                    name="display_test_text" 
                    id="display_test_text" 
                    cols="40" 
                    rows="6"><?php echo get_option('display_test_text'); ?></textarea>  
            </p>  

            <p>  
                <input type="hidden" name="action" value="update" />  
                <input type="hidden" name="page_options" value="display_test_text" />  

                <input type="submit" value="Save" class="button-primary" />  
            </p>  
        </form>  
    </div>  
<?php  
}  
function display_test() {  
   echo "<script>alert('".get_option("display_test_text")."');</script>";
}  
?>

效果图
《wordpress插件开发实例》
《wordpress插件开发实例》

给插件添加设置链接或者其他链接

可以看到插件就一个停用的链接,虽然设置页面有,但需要到菜单seetings下去找,为了方便用户,故添加一个设置链接。
在代码最后添加一下代码即可

add_filter( 'plugin_action_links_' . plugin_basename(__FILE__), 'add_test_links' );

function add_test_links ( $links ) {
 $mylinks = array(
 '<a href="' . admin_url( 'options-general.php?page=display_test' ) . '">设置</a>',
 );
return array_merge( $links, $mylinks );
}

《wordpress插件开发实例》

闲言碎语

以上就是一个插进开发的基本流程,故不是很难,本篇没有解释代码中的方法含义,基本在WordPress官方能查到,而且我也写了不少注释,在此就不多做解释了。

点赞

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注