Похожий вопрос раньше уже был
, но у нас ситуация несколько иная.
По части Аккаунтов доступа такая рассылка нужна, а по части нет. Можно ли как-то сделать так, чтобы для отдельных аккаунтов (доступов) рассылка не производилась?
Если в настройках аккаунта указать "продление доступа" запрещено, то письмо с напоминанием не будет высылаться?
Или возможно прямо в коде для ряда аккаунтов отменить письма?
Странный ответ) Вы продаете ПО, я его покупаю. И спрашиваю. Если в настройках аккаунта указать "продление доступа" запрещено, то письмо с напоминанием не будет высылаться?
По логике должно быть именно так: если продление доступа не нужно, то и письмо о продлении доступа уходить не должно.
Андрей, если Ваш продукт работает некорректно и Вы сейчас не имеете возможность его сопровождать (хотя, мы платим деньги и за ПО, и за сопровождение (обращение на форум)), напишите, пожалуйста, какие строки кода и как нужно поправить. Чтобы функция "продление доступа" запрещено - работала корректно.
Спасибо.
Я не вижу некорректной работы. Письмо об окончании платного доступа никак не привязано к опции продления аккаунта и привязано быть не должно. Письмо лишь сообщает, что время подходит к концу, почему оно не должно отправляться при невозможности продления неясно, доступ закончится - появится новая возможность его приобрести.
Вы же программист, значит, должны понимать логику: для тех доступов, которые можно продлить, уходит письмо с предложением продлить доступ; для тех, доступов которые продлять не нужно, уходит либо другое письмо (совершенно другой текст), либо вообще не уходит письмо. Логично же, да?
Соответственно, вопрос. Если мы не можем сделать разные письма для разных доступов, то можем хотя бы сделать так, чтобы для доступов, которым не нужно продление, письмо не уходило (хотя бы так; не прошу отдельное письмо). Можно ли оперативно какие-то строки текста поправить, чтобы сделать эту связь? Галочка "запрещено" = письмо не отправляется по этому виду доступа.
Андрей, строку добавили. Но письма всё равно приходят.
Пользователь подписан на два аккаунта. В одном стоит галочка Продление доступа "Разрешено". В другом "Запрещено". Приходит и в том, и в другом случае письмо.
Может быть, что-то еще нужно поправить или как-то иначе? А то пользователям уходят некорректные письма. Очень нужна Ваша помощь.
Напоминаю:
Версия WP-Recall: 16.17.5
Версия дополнения: 1.6.0
Есть вот такой кусок кода, в которой указанной Вами строки не видно (else if вообще только 1 раз используется в другом смысле):
function wau_daily_cron_actions() { $access = wau_get_access_by_args( array( 'number' => -1, 'is_prolong' => 1 ) ); if ( ! $access ) return false; $mailText = wau_get_option( 'mail-text-remind' ); // $daySeconds = wau_get_option( 'days-remind', 1 ) * 86400; foreach ( $access as $acc ) { $time = $acc->access_time - (strtotime( current_time( 'mysql' ) ) - strtotime( $acc->access_date )); // Отправлять письма когда пользователю осталось // 6 дней // 3 дня $oneDay = 86400; $firstMailDays = 6; $secondMailDays = 3; $shouldSendFirstMail = ($time >= $firstMailDays * $oneDay) && ($time <= ($firstMailDays + 1) * $oneDay); $shouldSendSecondMail = ($time >= $secondMailDays * $oneDay) && ($time <= ($secondMailDays + 1) * $oneDay); if ( $time < 0 ) { wau_delete_access( $acc->access_id ); } else if ($shouldSendFirstMail || $shouldSendSecondMail) { $timeData = wau_parse_time( $time ); $mailTextParse = str_replace( array( '{accountName}', '{userName}', '{timeEnd}' ), array( wau_get_account_field( $acc->account_id, 'account_name' ), get_the_author_meta( 'display_name', $acc->user_id ), ($timeData['day'] ? $timeData['day'] . ' дн. ' : '') . $timeData['hour'] . ' час. ' . $timeData['minute'] . ' минут' ), $mailText ); rcl_mail( get_the_author_meta( 'email', $acc->user_id ), __( 'Время вашего доступа истекает!' ), $mailTextParse ); } } }
Куда именно добавить, подскажите, пожалуйста. И оставлять ли правку с prolong?
Может быть, это связано с тем, что мы добавили вручную отправку второго письма (за 3 дня и 6 дней - с Вами очень давно это обсуждали). Тогда подскажите, как поправить, чтобы всё корректно работало.
Спасибо.
То есть должно получиться так, верно?
foreach ( $access as $acc ) { if(!wau_get_account($acc->account_id)->is_prolong) continue; $time = $acc->access_time - (strtotime( current_time( 'mysql' ) ) - strtotime( $acc->access_date )); // Отправлять письма когда пользователю осталось // 6 дней // 3 дня $oneDay = 86400; $firstMailDays = 6; $secondMailDays = 3; $shouldSendFirstMail = ($time >= $firstMailDays * $oneDay) && ($time <= ($firstMailDays + 1) * $oneDay); $shouldSendSecondMail = ($time >= $secondMailDays * $oneDay) && ($time <= ($secondMailDays + 1) * $oneDay);