Intereting Posts
Как использовать две одинаковые таксономии в одной и той же должности по-разному? Как я могу сделать число просмотров для просмотра доступным? Изменение параметров выбора на основе предыдущего выбора с помощью PHP & AJAX Как создать выделенную папку для определенной роли через регистрацию Контактная форма JQuery для отправки почты администратору как создать файл php и загрузить его в сообщении WordPress? Показать сообщение в слайдере Крюк в фильтр_состояния Только для JSON API Отсутствует текстовая область esc_attr_e Как проверить, активна ли тема? Кодирование управляющего символа после использования автозаполнения jquery Создание включений и исключений Переупорядочивать сообщения в цикле: иметь сообщения одного конкретного автора ниже других Вставить избранное видео Как получить все должности в категории, которые были опубликованы между двумя датами?

Работы Cron в классе

Наличие:

pluginname.php

// If this file is called directly, abort. if ( ! defined( 'ABSPATH' ) ) { die(); } define('PLUGINNAME_PLUGIN_URL', plugin_dir_url( __FILE__ )); define('PLUGINNAME_PLUGIN_DIR', plugin_dir_path(__FILE__)); require_once( plugin_dir_path( __FILE__ ) . 'class-pluginname.php' ); // Register hooks that are fired when the plugin is activated, deactivated, and uninstalled, respectively. register_activation_hook( __FILE__, array( 'PluginName', 'activate' ) ); register_deactivation_hook( __FILE__, array( 'PluginName', 'deactivate' ) ); PluginName::get_instance(); 

класса pluginname.php

  /** * Initialize the plugin * * @since 1.0.0 */ private function __construct() { #add_action('init', array($this, 'widget_add_vars')); #add_action('params', array($this, 'catch_widget_query')); add_action('dailyExport', array($this, '_generateJson')); if (!wp_next_scheduled('dailyExport')) { wp_schedule_event( time(), 'daily', 'dailyExport' ); } } /** * Return an instance of this class. * * @since 1.0.0 * * @return object A single instance of this class. */ public static function get_instance() { // If the single instance hasn't been set, set it now. if ( null == self::$instance ) self::$instance = new self; return self::$instance; } /** * Fired when the plugin is activated. * * @since 1.0.0 */ public static function activate() { self::_generateJson(); wp_schedule_event(time(), 'daily', 'dailyExport'); } /** * Fired when the plugin is deactivated. * * @since 1.0.0 */ public static function deactivate() { wp_clear_scheduled_hook('dailyExport'); } public function dailyExport() { return self::_generateJson(); } 

Мне было интересно, если вы считаете правильным определить как static activate и deactivate функции, и если вы считаете, что я правильно работаю с событием cron, планируйте ежедневные события.

Я написал свой плагин на основе этого шаблона https://github.com/tommcfarlin/WordPress-Plugin-Boilerplate

Solutions Collecting From Web of "Работы Cron в классе"

wp_cron прошлой неделе я работал с wp_cron в плагине, и мы сражаемся и больше не разговариваем, но для справки это то, что я делаю;

1) – установить запланированное событие cron на register_activation_hook
2) – удалить запланированное событие cron на register_deactivation_hook

Если вы обеспокоены тем, что запланированное событие cron может быть стерто из базы данных, вы можете добавить рутину, так как вам уже нужно проверять ваши события cron следующей запланированной меткой времени;

 if (!wp_next_scheduled('dailyExport')) { //schedule event wp_schedule_event( time(), 'daily', 'dailyExport' ); } 

Мой примерный класс;

 register_activation_hook(__FILE__, array( 'Killa', 'activated' ) ); register_deactivation_hook( __FILE__, array( 'Killa', 'deactivated' ) ); add_action('plugins_loaded', array ( Killa::get_instance(), 'plugin_setup' ) ); class Killa { protected static $instance = NULL; public static function get_instance() { if ( null === self::$instance ) { self::$instance = new self; self::load_files(); } return self::$instance; } public function plugin_setup() { add_action('my_cron_event', array($this, 'my_callback_function')); } public function __construct() { //empty } public static function activated() { wp_schedule_event( time(), 'hourly', 'my_cron_event'); } public static function deactivated() { wp_clear_scheduled_hook( 'my_cron_event' ); } public function my_callback_function() { //do your thing here... such as generate JSON } } 

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

Также допустимо, чтобы ваши крючки регистрации внутри конструктора тоже зависели от вашей структуры класса.