• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    wordpress开发之插件开发初识(wordpress插件开发基础)

    发布者: 竹韵 | 发布时间: 2025-6-19 12:13| 查看数: 75| 评论数: 0|帖子模式


    首先,你要在wp-content/plugins/下建立一个文件夹,文件夹的名字最好只由字母、数字、“-”和下滑组成。同时,还要在这个文件夹下建立一个同名的php文件。比如你的文件夹名字为my-plugin,则php的名字就是my-plugin.php,这个文件做为你plugin的主文件,像主题文件的sytle.css文件一样,它的头部包含了对这个插件的描述信息。下面是一个简单的例子:
     
    复制代码代码如下:

    < ?php
    /*
    Plugin Name: 插件名称
    Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
    Description: 插件的简单描述
    Version: 插件版本号, 例如: 1.0
    Author: 插件作者
    Author URI: http://URI_Of_The_Plugin_Author作者地址
    */
    ?>  
    另外如果你想要把你的插件提交到wordpress.org上,你还要在文件夹中添加一个readme.txt文件。就像主题中的style.css文件一样。类似的,readme.txt的头部包含了对这个插件的基本描述信息。关于readme.txt的格式,可以参考WordPress的官方示例。因为这里只是简单的写一个可用的Plugin,就不介绍reaadme.txt了。
    WordPress的插件其实就是一堆php的方法。这些方法通过调用系统自带的钩子来为博客增加新的功能。下面我们就来看一下什么是系统的钩子。
    插件钩子

    WordPress定义了很多不同用途的钩子,在Wordpress运行的不同阶段,它会检测当前阶段是否注册了钩子函数,如果有,则优先执行这些函数。添加filter的方法如下:
     
    复制代码代码如下:
    add_filter('filter_name', 'filter_callback_function_name', $priority=10, $accepted_args=1); 
    add_fitler的四个参数分别是:要挂载的钩子的名称,钩子的回调函数,回调函数的优先级,回调函数的参数个数。一个例子如下:
     
    复制代码代码如下:

    add_fitler('the_title', 'my_title', 10, 2);
    function my_title($title, $id) {
    return Newstitle;
     
    这个例子中,我们在the_title钩子上挂载了一个my_title的函数,这个函数接受两个参数,每别是文章的标题和ID,当Wordpress要把文章post给浏览器之前,会首先调用到这个函数,在这里,我们在每个文章的标题前加了一个“News:”。
    关于Wordpress所提供的所有钩子,可以参考Wordpress的官网文档:Filter Reference。
    另外你可能会在某些文章中看到令一个添加钩子的函数add_action。我们来看一下wordpress的内核你或许就明白了:

     
    复制代码代码如下:

    function add_action($tag, $function_to_add, $priority = 10, $accept_args = 1) {
    return add_filter($tag, $function_to_add, $priority, $accept_args);
     
    所以add_action和add_filter本质上没有任何区别。
    之前说过,Wordpress会在系统的不同阶段调用不同的钩子,其实,如果需要,你也可以在你的代码里手动调用这些钩子。方法如下:

     
    复制代码代码如下:

    $return_values = apply_filtere('filter_name', $args ... );  
    有了这些filter,你就可以在wordpress处理流程中的任意地方修改数据内容,实现插件所需要的功能。
    Option机制

    仅仅有了filter还不够,很多插件还需要保存一些信息,比方插件的属性设置之类,这个时候你就要用到Wordpress的Option机制了。
    WordPress的Option机制通过add_option,get_option, update_option三个函数来实现,三个函数的定义如下:

     
    复制代码代码如下:

    add_option($name, $value, $deprecated, $autoload);
    get_option($name);
    update_option($option_name, $newvalue);  
    add_option有4个参数,功能分别如下:
    $name:必选,变量名
    $value:可选,变量值,默认为空字符
    $deprecated:没用的参数,纯粹是历史遗留问题。留着它只是为了兼容以有的插件。当然如果你要调用到后面的$autoload,你需要为它传入一个空字符或null。
    $autoload: “yes” or “no”,默认是”yes”,当设为”yes”时,该属性会在wp_load_alloptions调用时获取到。
    get_option用来获取你添加的参数,同时系统中已经默认定义了一些参数,你可以参考Wordpress的官方列表:Option Refernce。
    而update_option则是用来更新option。
    三个方法都比较好理解,我也不多说了。通过这三个方法你可以把你需要长久保存的数据放在数据库中。
    设置页面

    有了filter和option,我们已经完成了一个插件的核心工作。不过做为一个插件,它经常还需要为用户提供一个设置页面,也就是在Wordpress后台插件列表中所看到的settings链接,如下图:
    settings
    这里我们用一个最简单的例子还说明如何添加一个设置页面:

     
    复制代码代码如下:



    < ?php screen_icon(); ?>
    Settings



    < ?php
    // This prints out all hidden setting fields
    settings_fields(‘test_option_group’);
    do_settings_sections(‘test-setting-admin’);
    ?>
    < ?php submit_button(); ?>


    < ?php
    }
    public function page_init(){
    register_setting(‘test_option_group’, ‘array_key’, array($this, ‘check_ID’));
    add_settings_section(
    ‘setting_section_id’,
    ‘Setting’,
    array($this, ‘print_section_info’),
    ‘test-setting-admin’
    );
    add_settings_field(
    ‘some_id’,
    ‘Some ID(Title)’,
    array($this, ‘create_an_id_field’),
    ‘test-setting-admin’,
    ‘setting_section_id’
    );
    }
    public function check_ID($input){
    if(is_numeric($input['some_id'])){
    $mid = $input['some_id'];
    if(get_option(‘test_some_id’) === FALSE){
    add_option(‘test_some_id’, $mid);
    }else{
    update_option(‘test_some_id’, $mid);
    }
    }else{
    $mid = ”;
    }
    return $mid;
    }
    public function print_section_info(){
    print ‘Enter your setting below:’;
    }
    public function create_an_id_field(){
    ?>

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    浏览过的版块

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

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