Подключите нашего Telegram-бота для уведомлений о новых проектах
WP Scheduled to USER Role WooCommerse после оплаты подписки: месяц, год... доработать функцию PHP
Разместить заказ
A
Заказчик
Отзывы фрилансеров:
+ 33
- 0
Зарегистрирован на сайте 10 лет и 1 месяц
Бюджет:
1000 руб
12.27 $ — 10.77 €
Привет Разработчик! Требуется доработать функцию WP PHP для автоматической смены роли по подписке.
Имеется функция, которая меняет роль после оплаты конкретного товара WooCommerse.
add_action( 'woocommerce_order_status_completed', 'change_role_on_pro' );
function change_role_on_pro( $order_id ) {
$order = wc_get_order( $order_id );
$items = $order->get_items();
$products_to_check = array( '3420' ); // id товара WooCommerse
foreach ( $items as $item ) {
if ( $order->user_id > 0 && in_array( $item['product_id'], $products_to_check ) ) {
$user = new WP_User( $order->user_id );
// заменить роль
$user->remove_role( 'lead' );
$user->add_role( 'vip' );
// окончание цикла
break;
}
}
}
Требуется дополнить функцию условием: оплата по подписке.
Оплатил 15го числа текущего месяца и ему включается роль vip на месяц или год в зависимости от id товара.
По истечении времени, автоматически сбрасывается на роль: lead.
Промежуток времени задается не числом (30 дней, 365 дней), а именно датой оплаты и должна продлевать от даты до даты. Например, и в феврале (28 дней) и в мае (31 день) одинаково 15-го числа. В день текущей оплаты. То есть, продлит 25-го, следующий цикл пойдет с 25-го по 25-е.
* * *
Подсказка (найдена в интернете)
if ( ! wp_next_scheduled( 'alter_user_role_hook' ) ) {
wp_schedule_event( strtotime('tomorrow'), 'daily', 'alter_user_role_hook' );
}
function alter_user_role_function() {
global $wpdb;
$today = date('Y-m-d H:i:s',strtotime('today'));
$expired = $wdpb->get_col("SELECT user_id FROM {$wpdb->usermeta} WHERE expired_key <> $uid,
'role' => 'havent_paid'
)
);
}
}
}
add_action( 'alter_user_role_hook', 'alter_user_role_function' );
* * *
Для опытного разработчика делов на 30 минут, поэтому считаю гонорар достойный. Репутацией дорожу, смотрите отзывы. Оплачиваю сразу после результата.
Чтобы отсечь невнимательных и шаблонных – напишите мне: Алексей, задание прочёл.
Имеется функция, которая меняет роль после оплаты конкретного товара WooCommerse.
add_action( 'woocommerce_order_status_completed', 'change_role_on_pro' );
function change_role_on_pro( $order_id ) {
$order = wc_get_order( $order_id );
$items = $order->get_items();
$products_to_check = array( '3420' ); // id товара WooCommerse
foreach ( $items as $item ) {
if ( $order->user_id > 0 && in_array( $item['product_id'], $products_to_check ) ) {
$user = new WP_User( $order->user_id );
// заменить роль
$user->remove_role( 'lead' );
$user->add_role( 'vip' );
// окончание цикла
break;
}
}
}
Требуется дополнить функцию условием: оплата по подписке.
Оплатил 15го числа текущего месяца и ему включается роль vip на месяц или год в зависимости от id товара.
По истечении времени, автоматически сбрасывается на роль: lead.
Промежуток времени задается не числом (30 дней, 365 дней), а именно датой оплаты и должна продлевать от даты до даты. Например, и в феврале (28 дней) и в мае (31 день) одинаково 15-го числа. В день текущей оплаты. То есть, продлит 25-го, следующий цикл пойдет с 25-го по 25-е.
* * *
Подсказка (найдена в интернете)
if ( ! wp_next_scheduled( 'alter_user_role_hook' ) ) {
wp_schedule_event( strtotime('tomorrow'), 'daily', 'alter_user_role_hook' );
}
function alter_user_role_function() {
global $wpdb;
$today = date('Y-m-d H:i:s',strtotime('today'));
$expired = $wdpb->get_col("SELECT user_id FROM {$wpdb->usermeta} WHERE expired_key <> $uid,
'role' => 'havent_paid'
)
);
}
}
}
add_action( 'alter_user_role_hook', 'alter_user_role_function' );
* * *
Для опытного разработчика делов на 30 минут, поэтому считаю гонорар достойный. Репутацией дорожу, смотрите отзывы. Оплачиваю сразу после результата.
Чтобы отсечь невнимательных и шаблонных – напишите мне: Алексей, задание прочёл.
Разделы:
Опубликован:
26.01.2020 | 13:23