//delete-packages-with-cron.php
<?php
$parse_uri = explode('wp-content', $_SERVER['SCRIPT_FILENAME']);
require_once($parse_uri[0] . 'wp-load.php');
function deletePackagesOlderOneDay()
{
$args = array(
'post_type' => 'package',
'meta_query' => array(
array(
'key' => 'package-origin',
'value' => array('Брест', 'Гомель', 'Гродно', 'Витебск'),
'compare' => 'NOT IN',
)
),
'date_query' => array(
array(
'before' => '1 days ago'
)
)
);
$packages = get_posts($args);
foreach ($packages as $package) {
wp_delete_post($package->ID, true);
echo "Post: " . $package->ID . " deleted.<br>";
sleep(1);
}
}
deletePackagesOlderOneDay();
function deletePackagesOlderThreeDay()
{
$args = array(
'post_type' => 'package',
'meta_query' => array(
array(
'key' => 'package-origin',
'value' => array('Брест', 'Гомель', 'Гродно', 'Витебск'),
'compare' => 'IN',
)
),
'date_query' => array(
array(
'before' => '3 days ago'
)
)
);
$packages = get_posts($args);
foreach ($packages as $package) {
wp_delete_post($package->ID, true);
echo "Post: " . $package->ID . " deleted.<br>";
sleep(1);
}
}
deletePackagesOlderThreeDay();
Запускаю этот файл через cron каждый час. После удаления 5-6 постов, скрипт перестает выполняться, хотя в выборке много записей. В чем ошибка ?
Также добавил второй вариант. Cron в файле functions.php темы
//cron for delete packages
$cronArgs = array(false);
if (!wp_next_scheduled('package_hook_1', $cronArgs)) {
wp_schedule_event(time(), 'hourly', 'package_hook_1', $cronArgs);
}
add_action('package_hook_1', 'deletePackagesOlderOneDay', 10, 1);
function deletePackagesOlderOneDay()
{
$args = array(
'post_type' => 'package',
'meta_query' => array(
array(
'key' => 'package-origin',
'value' => array('Брест', 'Гомель', 'Гродно', 'Витебск'),
'compare' => 'NOT IN',
)
),
'date_query' => array(
array(
'before' => '1 days ago'
)
)
);
$packages = get_posts($args);
foreach ($packages as $package) {
wp_delete_post($package->ID, true);
}
}