Переключить роль пользователя по истечении срока подписки в Woocommerce

В Woocommerce я использую плагин YITH WooCommerce Подписка и хочу изменить роль пользователя, когда срок действия подписки истекает.

Для этого я знаю, что я должен использовать этот хук:

add_action( 'subscription_expired', 'my_function', 10, 2 );

function my_function( $user_id, $subscription_key ) {
    $sub= wcs_get_subscription_from_key( $subscription_key );
    // do something
}

Теперь у меня есть две базовые роли, agencia и talento, как мне сделать так, чтобы по истечении срока действия подписки роль пользователя менялась с agencia_pro или agencia_pro_plus обратно на agencia и talento_pro или talento_pro_plus на talento?

Как я могу создать функцию, которая проверяет роли пользователей и изменяет их либо на talento, либо на agencia в зависимости от текущей роли пользователя?

Спасибо.

Это может быть довольно сложно, раньше я изменял возможности пользователя только программно, но я знаю, что вам нужно будет подключиться к классу WP_User. Ознакомьтесь с обзором: usersinsights.com/wordpress-пользовательская-роль

JDev518 18.03.2019 23:17
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
1
979
1

Ответы 1

Бесплатный плагин подписки YITH Woocommerce, похоже, закрыт и не разрешать настройки

Для официального Плагин подписки Woocommerce используйте следующее:

add_action( 'woocommerce_subscription_status_expired', 'change_user_role_on_subscription_expired', 10, 1 );
function change_user_role_on_subscription_expired( $subscription ) {
    // Get WP_User Object from subscription
    $user = new WP_User($subscription->get_user_id());

    if ( in_array('agencia_pro', $user->roles) ) {
        $user->remove_role( 'agencia_pro' );
        $user->add_role( 'agencia' );
    }
    elseif ( in_array('agencia_pro_plus', $user->roles) ) {
        $user->remove_role( 'agencia_pro_plus' );
        $user->add_role( 'agencia' );
    }
    elseif ( in_array('talento_pro', $user->roles) ) {
        $user->remove_role( 'talento_pro' );
        $user->add_role( 'talento' );
    }
    elseif ( in_array('talento_pro_plus', $user->roles) ) {
        $user->remove_role( 'talento_pro_plus' );
        $user->add_role( 'talento' );
    }
}

Код находится в файле function.php вашей активной дочерней темы (или активной темы). Проверено, должно работать.

Спасибо, да, я использую этот плагин pt.wordpress.org/plugins/yith-woocommerce-подписка, я попробую

Steve Kess 19.03.2019 00:32

Есть ли проблема с использованием add_action( 'subscription_expired' вместо add_action( 'woocommerce_subscription_status_expired'?

Steve Kess 19.03.2019 00:34

Знаете ли вы какой-нибудь плагин WordPress, который позволяет узнать все доступные хуки на вашем сайте? или чтобы я мог видеть доступные хуки любого плагина?

Steve Kess 19.03.2019 00:43

@SteveKess Я посетил исходный код бесплатного плагина, и для него нет доступного хука действия… Таким образом, бесплатный плагин подписки YITH Woocommerce не может изменить роль пользователя с помощью хуков… Теперь официальный коммерческий плагин Woocommerce Subscriptions позволяет это.

LoicTheAztec 19.03.2019 01:13

Вы знаете, является ли официальный плагин подписки Woocommerce бесплатным?

Steve Kess 19.03.2019 01:36

@SteveKess Не существует бесплатного официального плагина подписки Woocommerce (только коммерческая версия, которая немного дороже, но надежна, открыта и настраиваема). Если этот ответ отвечает на ваш вопрос, пожалуйста, принимать ответ, спасибо.

LoicTheAztec 19.03.2019 21:07

Другие вопросы по теме