【问题标题】:Adding code to plugin that only executes the first time its activated?将代码添加到仅在第一次激活时执行的插件?
【发布时间】:2011-02-11 05:42:41
【问题描述】:

是否可以将代码包装在仅在插件第一次激活时才执行的特殊函数中?

我有一些数据库代码需要在插件激活时运行,但此后无需再次运行代码。

【问题讨论】:

    标签: php wordpress plugins


    【解决方案1】:

    是的,这是可能的。您可以注册一个插件激活钩子,该钩子仅在插件激活时运行。我挖掘了我为一些示例代码编写的旧插件:

    class MyPlugin
    {
        //constructor for MyPlugin object
        function MyPlugin() {
            register_activation_hook(__FILE__,array(&$this, 'activate'));
        }
    
        function activate()
        {
            //initialize some stored plugin stuff
            if (get_option('myplugin_data_1') == '') {
                update_option('myplugin_data_1',array());
            }
            update_option('myplugin_activated',time());
            //etc
         }
    }
    

    【讨论】:

    • 感谢 Zombat,尤其是示例。一个问题:是否有可能有一个工作插件(只要插件被激活,代码就会执行)也有一个激活钩子?
    • 不太确定我是否遵循。每当在 wordpress 管理面板中发生“激活插件”操作时,您注册为激活钩子的函数内的任何内容都将运行。您可以在插件类中包含一堆其他代码来做其他事情,但不依赖于激活钩子。它可以正常使用。抱歉,如果这不能回答你的问题,我不太明白你在问什么......?
    • 我想通了。我对将插件的 init 放在哪里以及在哪里放置激活钩子感到困惑。
    【解决方案2】:

    http://codex.wordpress.org/Function_Reference/register_activation_hook

    函数register_activation_hook (在 WordPress 2.0 中引入) 注册要运行的插件函数 当插件被激活时。

    【讨论】:

    • 谢谢多米尼克。感谢您的帮助。
    【解决方案3】:

    还请记住,一旦您的插件被您自己/用户停用,您可以删除您存储在 wp 数据库中的任何表选项,我最近写了一篇关于此的小帖子,谈论 wp register_deactivation_hook() 函数。。

    http://www.martin-gardner.co.uk/how-to-get-your-wordpress-plugin-to-drop-table-from-the-database/

        <?php
        register_deactivation_hook( __FILE__, ‘pluginUninstall’ );
    
        function pluginUninstall() {
          global $wpdb;
          $thetable = $wpdb->prefix."your_table_name";
          //Delete any options that's stored also?
          //delete_option('wp_yourplugin_version');
          $wpdb->query("DROP TABLE IF EXISTS $thetable");
        }
        ?>
    

    【讨论】:

      猜你喜欢
      • 2013-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-28
      • 2023-01-21
      • 1970-01-01
      相关资源
      最近更新 更多