沃梦达 / 编程技术 / CMS教程 / 正文

php – 插件激活挂钩无法在wordpress中工作

我正在尝试开发我的第一个Wordpress插件,并且我在第一阶段就陷入了困境.我正在尝试在插件激活时设置一些选项和数据库表,但没有运气.无论我做什么,插件都会激活,但数据库不受影响且选项不存储在DB中.我尝试在构造函数...

我正在尝试开发我的第一个Wordpress插件,并且我在第一阶段就陷入了困境.我正在尝试在插件激活时设置一些选项和数据库表,但没有运气.无论我做什么,插件都会激活,但数据库不受影响且选项不存储在DB中.我尝试在构造函数中回显,但似乎它永远不会到达它.我在WP中激活了调试,但没有报告错误.该功能没有被挂钩.有人能发现我的代码有什么问题吗?

在此先感谢您的帮助.

class Myplugin {

    private static $instance;

    public static function get_instance() {
        if ( ! self::$instance ) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    private function __construct() {
        register_activation_hook( __FILE__, array( &$this, 'plugin_activate' ) );
    }

    public function plugin_activate() {
        if ( version_compare( get_bloginfo( 'version' ), '3.8.2', ' < ' ) ) {
            deactivate_plugins( basename( __FILE__ ) );
        } else {
            $rlm_rsvplus_options = array(
                'db_version'          => '1.0',
                'event_name'          => '',
                'end_date'            => '',
            );

        update_option( 'rlm_myplugin_options', $rlm_myplugin_options );

        require_once( "includes/rlm_myplugin_db_setup.php" );//It never reaches this file.


    }
    }
}

$myplugin = Myplugin::get_instance();

解决方法:

register_activation_hook调用需要在类本身之外.

就像是:

class Myplugin {

    private static $instance;

    public static function get_instance() {
        if ( ! self::$instance ) {
            self::$instance = new self();
        }
        return self::$instance;
    }

    private function __construct() {
        // do other stuff here
    }

    public function plugin_activate() {
        if ( version_compare( get_bloginfo( 'version' ), '3.8.2', ' < ' ) ) {
            deactivate_plugins( basename( __FILE__ ) );
        } else {
            $rlm_rsvplus_options = array(
                'db_version'          => '1.0',
                'event_name'          => '',
                'end_date'            => '',
            );

        update_option( 'rlm_myplugin_options', $rlm_myplugin_options );

        require_once( "includes/rlm_myplugin_db_setup.php" );
    }
}

register_activation_hook( __FILE__, array( 'Myplugin', 'plugin_activate' ) );

您可以阅读Francis Yaconiello关于How to write WordPress plugin的以下教程的更多内容.

本文标题为:php – 插件激活挂钩无法在wordpress中工作

基础教程推荐