Cron Job In Custom Plugin не работает в Wordpress - PullRequest
0 голосов
/ 16 марта 2020

Я добавил этот cronjob в свой пользовательский плагин WordPress, но когда я запускаю функцию вручную, она работает, но через cronjob она не работает. Вот мой код! Все файлы плагинов загружены правильно, без ошибок. Кто-нибудь может мне помочь разобраться с этим! Я много пробовал, но все равно не работает.

    <?php

         if (!wp_next_scheduled('generateusedcarsfeed'))
        {
            wp_schedule_event(time() , '5mins', 'generateusedcarsfeed');
        }

        add_action('generateusedcarsfeed', 'generate_used_car_feed');
if (!wp_next_scheduled('generateusedcarsfeed'))
{
    wp_schedule_event(time() , '5mins', 'generateusedcarsfeed');
}

add_action('generateusedcarsfeed', 'generate_used_car_feed');

// Getting all used cars with all data

function generate_used_car_feed(){
    try{
        // for opening the csv file
        $file = fopen('all-cars-feed.csv', 'r');
        fwrite($file, '');
        $loop = new WP_Query($args);
        chmod('all-cars-feed.csv', 0777);

        // for creating array from csv file
        $file="all-cars-feed.csv";
        $csv= file_get_contents($file);
        $array = array_map("str_getcsv", explode("\n", $csv));
        $json_csv_arr = json_encode($array);
        $my_array_csv = json_decode($json_csv_arr, true);

        // for getting used car list from databse, only take publish used car
        global $wpdb;
        $query = "SELECT wp_postmeta.post_id, wp_postmeta.meta_value FROM wp_postmeta 
        INNER JOIN wp_posts ON wp_posts.id = wp_postmeta.post_id WHERE meta_key = 'car_registration_number' 
        AND post_status = 'publish'";
        $result = $wpdb->get_results($query);
        $json_reg_num = json_encode($result);
        $my_array = json_decode($json_reg_num, true);
        print_r($my_array); 
        foreach ($my_array as $value) {
            $car_reg_array = $value['meta_value'];
            $Post_id= $value['post_id'];
            $isTrue=true;

            $ch = fopen("all-cars-feed.csv", "r");
            while($row = fgetcsv($ch)) {
            if (in_array($car_reg_array, $row)) {
                echo 'found</hr>';
                $isTrue=false;
            }
         }
        if($isTrue)
        {
            $wpdb->query(
              'UPDATE   '.$wpdb->prefix.'posts SET post_status = "trash"
               WHERE ID = "'.$Post_id.'"');
        }
}

        //fclose($file);
    }
    catch(\Exception $e)
    {
        $txt = 'Message: ' . $e->getMessage();
        $myfile = fopen("newfile.txt", "w") or die("Unable to open file!");

        fwrite($fileLoger, $txt);
        fclose($fileLoger);
    }
}

1 Ответ

0 голосов
/ 16 марта 2020

Интересно, действительно ли этот интервал 5mins существует в вашей настройке? Попробуйте добавить этот код, чтобы убедиться, что он действительно существует (если он уже существует, он ничего не сломает):

function add_custom_cron_schedules($schedules){
  if (!isset($schedules["5mins"])) {
    $schedules["5min"] = array(
      'interval' => 5*60,
      'display' => __('Every 5 minutes'));
  }
  return $schedules;
}
add_filter('cron_schedules','add_custom_cron_schedules');

Если вы хотите получить доступные в настоящее время расписания, вы также можете использовать wp_get_schedules() и проверьте, существует ли определенный ключ (например, «5 минут»).

...