美文网首页
WordPress插件开发笔记(二):启用/禁用/卸载插件

WordPress插件开发笔记(二):启用/禁用/卸载插件

作者: 破旧的大卡车 | 来源:发表于2018-10-27 19:29 被阅读16次

    接下来, 我们用一个类模板来启用/禁用/卸载插件. 该类文件来自WPSE.
    在主文件latex2html.php末尾添加内容如下:

    <?php
    /**
     * The active/deactive/uninstall hooks
     */
    register_activation_hook( __FILE__, array( 'active_deactive_class', 'on_activation' ) );
    register_deactivation_hook( __FILE__, array( 'active_deactive_class', 'on_deactivation' ) );
    register_uninstall_hook( __FILE__, array( 'active_deactive_class', 'on_uninstall' ) );
    
    /**
     * Instanize the class
     */
    add_action('plugins_loaded', array('active_deactive_class', 'init'));
    
    /**
     * The active/deactive class
     */
    class active_deactive_class
    {
      protected static $instance;
    
      public static function init()
      {
        is_null ( self::$instance ) AND self::$instance = new self;
        return self::$instance;
      }
      /**
       * activation
       */
      public static function on_activation()
      {
        if ( !current_user_can('activate_plugins') )
          return;
        $plugin = isset ( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : '';
        check_admin_referer( "activate-plugin_{$plugin}" );
    
        # Uncomment the following line to see the function in action
        # exit ( var_dump( $_GET ) );
      }
      /**
       * deactivation
       */
      public static function on_deactivation()
      {
        if ( !current_user_can( 'activate_plugins' ) )
          return;
        $plugin = isset ( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : '';
        check_admin_referer( "deactivate-plugin_{$plugin}" );
    
        # Uncomment the following line to see the funcion in action
        # exit( var_dump( $_GET ) );
      }
      /**
       * uninstall
       */
      public static function on_uninstall()
      {
        if ( !current_user_can( 'activate_plugins' ) )
          return;
        check_admin_referer( 'bulk-plugins' );
    
        // Important: Check if the file is the one
        // thatn was registered during the uninstall hook.
        if ( __FILE__ != WP_UNINSTALL_PLUGIN )
          return;
    
        # Uncomment the following line to see the function in action
        # exit( var_dump( $_GET ) );
      }
      /**
       * Construct the plugin object
       */
      public function __construct()
      {
        # INIT the plugin: Hook your callbacks
      }
    

    在下一次, 我们将涉及如何设置插件的自定义页面.

    附注: 可以参考php类文档以及WP的register_activation_hook中会提及的一些注意事项, 例如全局变量的引用.

    疑问: 我尝试将上述代码放入到一个文件includes/active-deactive.php, 然后在主文件中include_once调入, 发现该文件没有执行, 原因不详.

    相关文章

      网友评论

          本文标题:WordPress插件开发笔记(二):启用/禁用/卸载插件

          本文链接:https://www.haomeiwen.com/subject/ihadtqtx.html