Добавление кода в плагин, который запускается только в первый раз, когда он активирован? - PullRequest
8 голосов
/ 22 апреля 2010

Можно ли обернуть код в специальную функцию, которая выполняется только при первом включении плагина?

У меня есть код базы данных, который мне нужно запустить при активации плагина, но после этого код не нужно запускать снова.

Ответы [ 3 ]

12 голосов
/ 22 апреля 2010

Да, это возможно. Вы можете зарегистрировать хук активации плагина, который запускается только тогда, когда плагин активируется. Я выкопал старый плагин, который я написал для некоторого примера кода:

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
     }
}
3 голосов
/ 22 апреля 2010

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

Функция register_activation_hook (введено в WordPress 2.0) регистрирует функцию плагина для запуска когда плагин активирован.

1 голос
/ 23 апреля 2010

помните также, что как только ваш плагин деактивируется вами / пользователем, вы можете удалить любые опции таблиц, которые вы сохранили в базе данных wp, я написал небольшой пост об этом, недавно рассказывая о функции wp register_deactivation_hook () ..

http://www.martin -gardner.co.uk / как к-получить ваш-WordPress-плагин-к-падение стола-из-баз данных /

    <?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");
    }
    ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...