#php #wordpress #cron
#php #wordpress #cron
Вопрос:
Я хотел бы создать интерфейс для создания простого cron creator для моего плагина, например WP-Control plugin. У меня есть страница настроек с простыми входными данными, такими как имя Cron, интервал и задача для достижения. В этом случае я хочу экспортировать некоторые данные, используя Cron. Функция уже существует и готова к использованию. Но я хочу динамически присвоить имя событию crons, которое будет создано после отправки моей формы.
<?php
function admin_setting_page() {
$content = '<h1>Crons</h1>
<form method="post">
<h2>Name</h2>
<input name="name" type="text" />
<br />
<h3>Time of Occurence</h3>
<input type="time" name="time"
min="00:00" max="11:59">
<h3>Repeat</h3>
<select name="repeat">
<option value="once">Once</option>
<option value="daily">Daily</option>
<option value="custom">Custom</option>
</select>
<h3>Action</h3>
<select id="action" name="action">
<optgroup label="Export">
<option value="export1">Products</option>
<option value="export2">Customer</option>
</optgroup>
</select>
<br />
<br />
<input type="submit" name="create_cron" value="create_cron"/>
</form>'
;
echo $content;
if (isset($_POST['create_cron'])) {
$hookname = $_POST['name'];
$time = $_POST['time'];
$repeat = $_POST['repeat'];
$action = $_POST['action'];
if( !wp_next_scheduled( $hookname ) ) {
wp_schedule_event( time(), $repeat, $action );
}
add_action($action, 'myExportFunction');
}
К сожалению, созданные cron не имеют никаких действий, но при перемещении add_action($action, 'myExportFunction');
за пределы функции admin_setting_page()
, в верхней части файла, cron создается успешно, при условии, что я даю имя крючку.
Но я хочу, чтобы имя крючка было динамическим, потому что оно должно быть уникальным.
После некоторых исследований я обнаружил, что, возможно, использование add_filter, подключенного к ‘scheduled_event’, может быть решением, но я не уверен, как его использовать.
Я полагаю, что проблема в том, что действие еще не создано, когда запланирован cron.
Любое предложение или помощь, пожалуйста?