6ответ(ов) в теме
icedesign
не в сети 3 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
1
13:52
Версия WP-Recall: 16.22.12
Версия дополнения: 1.1.1

Тоже увидел что заказы даже оплаченные начали пропадать, условие упустили. Но еще меня пугает вот эта строчка, я думаю тут ошибка

order_date  > date_sub('" . current_time( 'mysql' ) . "', interval $hours hour)"

Просто интервал вообще не срабатывает, и не важно если поставить 2 часа например, оно сработает по крону.
Думаю там должен быть '+'
order_date  > date_sub('" . current_time( 'mysql' ) . "' + interval $hours hour)

И еще вопрос как раз по этой теме как сделать например чтоб сработало через 10 минут,

add_action( 'wp', 'rcl_cron_activated' );
просто смотрю тут крон подвязан к wp и скорее всего там по стандарту час?

Редакции сообщения
25.09.2020 13:53icedesignПричина: не указано
0
Андрей CS
не в сети 3 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16842
2
13:59

icedesign сказал(а)
Думаю там должен быть '+'

нет там плюсов. документация по функции

Вы не можете просматривать опубликованные ссылки

icedesign сказал(а)
как раз по этой теме как сделать например чтоб сработало через 10 минут

Вам в документацию wp тогда

Вы не можете просматривать опубликованные ссылки
0
icedesign
не в сети 3 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
3
14:35

Да ошибся, странно тогда что оно сразу срабатывало когда я его подключил к хуку,

rcl_create_order
. Да все понял, думал есть уже в Recall поэтому спросил. Спасибо!

0
icedesign
не в сети 3 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
4
15:12

Нет чего-то не разберусь чего оно срабатывает не по условию в interval.. добивил фильтр на срабатывание каждые 10 мин.

add_filter( 'cron_schedules', 'cron_add_minute' );
function cron_add_minute( $schedules ) {
    $schedules['minute'] = array(
        'interval' => 600,
        'display' => __( '10 minute' )
    );
    return $schedules;
}

Тут тоже переписал

        $hours = 10;

	if ( ! $hours )
		return;

	$orderIds = $wpdb->get_col( "SELECT "
		. "order_id FROM " . RCL_PREF . "orders "
		. "WHERE order_status = '1' "
		. "&& order_date  > date_sub('" . current_time( 'mysql' ) . "', interval $hours minute)" );

Для теста даже делал так,

add_action( 'rcl_create_order', 'stm_delete_expired_orders', 10 );

Сразу удаляет товар хотя есть же условие интервал
order_date  > date_sub('" . current_time( 'mysql' ) . "', interval $hours minute)

Может быть что мое время в MySQL не совпадает с заказом?

current_time( 'mysql' )

Редакции сообщения
25.09.2020 15:20icedesignПричина: вопрос про время
0
Андрей CS
не в сети 3 часа
На сайте с 30.11.-0001
Администратор
Тем 71
Сообщения 16842
5
18:04

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

В дополнении ошибку поправил при сравнении времени, строка должны быть такой

order_date  < date_sub('" . current_time( 'mysql' ) . "', interval $hours hour)

теперь выборка на удалении будет только тех заказов, которые старше установленного времени

0
icedesign
не в сети 3 года
На сайте с 05.05.2020
Участник
Тем 10
Сообщения 34
6
21:26

Вот я же говорил что там либо условие было не верно, либо не туда стрелка.. но я убрал резерв товара, теперь вычитает если товар оплачен, а то выходит что не могут купить пока товар не пропадет из оформленных.

насчет крона я просто не весь код скинул:

<?php
add_filter( 'cron_schedules', 'cron_add_minute' );
function cron_add_minute( $schedules ) {
    $schedules['minute'] = array(
        'interval' => 600,
        'display' => __( '10 minute' )
    );
    return $schedules;
}
add_action( 'wp', 'rcl_cron_activated' );
function rcl_cron_activated() {
    if ( ! wp_next_scheduled( 'rcl_cron_minute_schedule' ) ) {
        wp_schedule_event( time(), 'minute', 'rcl_cron_minute_schedule' );
    }
    if ( ! wp_next_scheduled( 'rcl_cron_hourly_schedule' ) ) {
        wp_schedule_event( time(), 'hourly', 'rcl_cron_hourly_schedule' );
    }
    if ( ! wp_next_scheduled( 'rcl_cron_twicedaily_schedule' ) ) {
        wp_schedule_event( time() + 900, 'twicedaily', 'rcl_cron_twicedaily_schedule' );
    }
    if ( ! wp_next_scheduled( 'rcl_cron_daily_schedule' ) ) {
        wp_schedule_event( time() + 1800, 'daily', 'rcl_cron_daily_schedule' );
    }
}

add_action( 'rcl_cron_minute_schedule', 'rcl_cron_minute' );
function rcl_cron_minute() {

    rcl_add_log(
        __( 'Launch cron events minute', 'wp-recall' ) . ' rcl_cron_minute'
    );

    do_action( 'rcl_cron_minute' );
}

0
Вы не имеете права на публикацию сообщений в этой теме