Плагин отложенной активации на указанное c время - PullRequest
0 голосов
/ 10 июля 2020

Я создаю плагин, который будет задерживать конкретную c активацию плагина на определенное c время загрузки веб-сайта.

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

База данных:

CREATE TABLE `wp_wdl` (
  `id` int(255) NOT NULL,
  `plugin_name` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `plugin_path` varchar(255) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `plugin_time_delay` varchar(20) COLLATE utf8mb4_unicode_520_ci NOT NULL,
  `plugin_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_520_ci;

Структура базы данных:

id | plugin_name       | plugin_path                          | plugin_time_delay | plugin_time
----------------------------------------------------------------------------------------------------------
1  | Contact Form 7    | contact-form-7/wp-contact-form-7.php | 3                 | 2020-07-10 00:42:46
----------------------------------------------------------------------------------------------------------
2  | Akismet Anti-Spam | akismet/akismet.php                  | 7                 | 2020-07-10 00:43:13

Мой вопрос: как отложить активацию на указанные c числа секунд, когда пользователь посещает страницу?

У меня есть способ активации плагина:

public function activatePlugin($plugin_path) // i.e. /akismet/akismet.php
{
    $current = get_option('active_plugins');
    $plugin = plugin_basename(trim($plugin));

    if (!in_array($plugin, $current)) {
        $current[] = $plugin;
        sort($current);
        do_action('activate_plugin', trim($plugin));
        update_option('active_plugins', $current);
        do_action('activate_' . trim($plugin));
        do_action('activated_plugin', trim($plugin));
    }

    return null;
}

И с этим я пробовал что-то вроде это (но не успешно):

$time = date("h:i:s", time() + 30);

if ($time == date('h:i:s')) {
    $delay->activatePlugin($path);
}

Может ли кто-нибудь намекнуть мне, как я могу справиться с этим?

Я не уверен, нужно ли мне отправлять результат $time = date("h:i:s", time() + 30); в базу данных и работать в этом направлении, нужно ли мне работать с cronjob или чем-то еще.

Любая помощь приветствуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...