Сегодня я столкнулся с интересной проблемой при разработке простого скрипта для клиента. Клиент хотел, чтобы его товарный ассортимент WooCommerce автоматически обновлялся каждый день в установленное время, но событие просто не запускалось. Ниже вы можете найти мою реализацию скрипта, который был написан в файле functions.php внутри папки темы:
// UPDATE WOOCOMMERCE STOCKS AGAINST BRANDSDISTRIBUTION
function my_cron_schedules($schedules){
if(!isset($schedules["5min"])){
$schedules["5min"] = array(
'interval' => 5*60,
'display' => __('Once every 5 minutes'));
}
if(!isset($schedules["1min"])){
$schedules["1min"] = array(
'interval' => 1*60,
'display' => __('Once every 1 minutes'));
}
if(!isset($schedules["30min"])){
$schedules["30min"] = array(
'interval' => 30*60,
'display' => __('Once every 30 minutes'));
}
return $schedules;
}
add_filter('cron_schedules','my_cron_schedules');
wp_schedule_event(time(), '1min', 'my_schedule_hook');
function my_schedule_hook(){
// do something every day
echo "creating data.csv because i didnt find it";
$username = 'REMOVED FOR SECURITY';
$password = 'REMOVED FOR SECURITY';
$header = "Authorization: Basic " . base64_encode($username . ':' . $password);
$url = 'https://www.brandsdistribution.com/restful/export/api/products.csv?acceptedlocales=pt_PT';
if (!file_exists("data.csv")) {
$body = wp_remote_retrieve_body(wp_remote_get($url, array('headers' => $header)));
file_put_contents("data.csv", $body);
}
if (($handle = fopen("data.csv", "r")) !== false) {
fgetcsv($handle);
while (($data = fgetcsv($handle, 1000, ",")) !== false) {
$num = count($data);
for ($c = 0; $c < $num; $c++) {
$col[$c] = esc_attr($data[$c]);
}
$product_id = 7;//$col[28];
$quantity = 200;//$col[31];
wc_update_product_stock_status($product_id, $quantity);
}
}
fclose($handle);
}
Мы настроили запуск события каждую 1 минуту в целях тестирования. Скрипт даже не достигает первого «если» внутри функции my_schedule_hook ().
Может быть, это что-то связанное с Хроном?
Заранее спасибо