выполнить функцию в плагине WordPress с помощью crontab

Вопрос или проблема

Итак, я хочу запустить функцию в моем плагине из crontab. В качестве примера, я хочу запустить её каждый день в 1:10 ночи.

function my_cronjob_action () {
    // эта функция в моем плагине
    // код для выполнения при запуске cron
    syslog(LOG_DEBUG, 'выполнено unix cron');
} add_action('my_cronjob_action', 'my_cronjob_action');

Я отключил wp-cron, добавив define( 'DISABLE_WP_CRON', true ); в wp-config.php. Каков следующий шаг, чтобы функция могла быть выполнена из crontab?

Спасибо заранее.

Я нашел отличное решение здесь: Запуск пользовательского плагина wordpress с помощью linux cron

Мой путь был /usr/bin/wp, так что проверьте ваш сервер.

Вы можете просто добавить вашу функцию в файл, и используя скрипт wp bin, вам не нужно добавлять ничего в ваш php файл для использования функций WordPress.

Мне удалось запустить это из SSH / putty, но в настоящее время я не могу заставить это работать как cron задачу. Я обновлю, если пойму, как.

Решение, к которому я пришел здесь, выглядит следующим образом:

  1. Установил WP-CLI и воспользовался командой eval-file.
  2. Преобразовал мой плагин wordpress в отдельный скрипт.
  3. В отдельном скрипте я инициировал wordpress, чтобы не пришлось изменять большинство из него. Я просто удалил свои хуки активации и другой код, специфичный для плагина wordpress.
  4. Моя финальная строка cron выглядела так:
    /usr/local/bin/wp –path=”/var/www/vhosts/path/to/site/” eval-file /var/www/vhosts/path/to/site/and/file/location/standalone-cron-send-email.php
  5. В целях безопасности я добавил это в верхнюю часть скрипта, чтобы внешние злоумышленники не могли запустить скрипт. Только WP-CLI может запустить скрипт, в противном случае сообщение о том, что он предназначен для выполнения из командной строки, возвращается в браузер.

if( php_sapi_name() !== ‘cli’ ) { die(“Предназначено для выполнения из командной строки”); }

Ответ или решение

Чтобы выполнить функцию плагина WordPress с помощью cron в Linux, вам потребуется выполнить ряд шагов. Ниже описан процесс, который поможет вам осуществить это, учитывая, что вы отключили wp-cron, добавив строку define( 'DISABLE_WP_CRON', true ); в файл wp-config.php.

Шаг 1: Установка WP-CLI

WP-CLI (WordPress Command Line Interface) позволяет вам управлять WordPress базой данных и выполнять команды непосредственно из командной строки. Убедитесь, что WP-CLI установлен на вашем сервере, проверив команду:

/usr/local/bin/wp --info

Если он не установлен, вы можете установить его, следуя инструкциям на официальном сайте WP-CLI.

Шаг 2: Создание исполняемого PHP-скрипта

Для того чтобы ваша функция могла быть выполнена через cron, создайте отдельный PHP-скрипт, который будет инициализировать WordPress и вызывать вашу функцию. Например, создайте файл standalone-cron-job.php в каталоге вашего плагина:

<?php

if (php_sapi_name() !== 'cli') {
    die("Meant to be run from command line");
}

// Подключаем файл конфигурации WordPress
require('/path/to/your/wordpress/wp-load.php'); // Убедитесь, что путь правильный

// Вызываем вашу функцию
do_action('my_cronjob_action');

Шаг 3: Настройка Cron

Теперь, когда у вас есть скрипт, который инициирует WordPress и вызывает вашу функцию, вам нужно настроить cron, чтобы запускать этот скрипт в нужное время. Используйте команду crontab -e для редактирования ваших cron задач и добавьте строку:

10 1 * * * /usr/local/bin/wp --path="/var/www/vhosts/path/to/site/" eval-file /path/to/your/standalone-cron-job.php

Пояснение к командам cron

  • 10 1 * * * — означает, что задача будет выполняться ежедневно в 1:10 ночи.
  • /usr/local/bin/wp --path="/var/www/vhosts/path/to/site/" указывает путь к вашему установленному WP-CLI и к директории установки WordPress для того, чтобы скрипт мог получить доступ к функциям WP.
  • eval-file /path/to/your/standalone-cron-job.php — указывает пути к вашему созданному скрипту.

Шаг 4: Проверка лога

Для подтверждения успешного выполнения функции вы можете использовать syslog или добавить код для логирования в ваш скрипт. Убедитесь, что вы настраиваете уровни логирования и права доступа для файлов и директорий, чтобы предотвратить несанкционированный доступ.

Заключение

С помощью этой инструкции вы сможете запускать функцию вашего плагина WordPress через cron, обойдя механизмы wp-cron. Обязательно протестируйте ваш cron, запуская его вручную, чтобы убедиться, что все работает корректно. Такое эффективное управление функциями вашего WordPress плагина через cron позволяет автоматизировать задачи и улучшить функциональность вашего веб-сайта.

Если у вас есть дополнительные вопросы или проблемы с настройкой, не стесняйтесь обращаться за помощью на форумы поддержки WordPress или другие профессиональные ресурсы.

Оцените материал
Добавить комментарий

Капча загружается...