Отключить отмену подписки для одной подписки в WooCommerce - PullRequest
0 голосов
/ 21 октября 2019

У меня есть 3 подписки, доступные на моем сайте WooCommerce. 1 из подписных планов - Ежегодный Оплачиваемый Ежемесячный. Это существенно означает минимальный срок 12 месяцев, но оплачивается месяц за месяцем. WooCommerce изначально не поддерживает это.

Что я хотел бы сделать, это определить, есть ли у пользователя определенная подписка, и если это так, скрывать кнопку отмены до тех пор, пока подписка не будет превышать 11 месяцев.

Я обнаружил, что нижескрывает кнопку отмены во всех случаях. Я ищу способ проверить, имеет ли подписка XXX, и если да, то вместо этого скрыть кнопку отмены

/**
 * Only copy the opening php tag if needed
 */
function sv_edit_my_memberships_actions( $actions ) {
    // remove the "Cancel" action for members
    unset( $actions['cancel'] );
    return $actions;
}
add_filter( 'wc_memberships_members_area_my-memberships_actions', 'sv_edit_my_memberships_actions' );
add_filter( 'wc_memberships_members_area_my-membership-details_actions', 'sv_edit_my_memberships_actions' );

1 Ответ

2 голосов
/ 21 октября 2019

Прежде всего вам нужно перечислить текущие активные подписки пользователей и определить ту, которую мы будем фильтровать, используя wc_memberships_get_user_active_memberships и сравнить дату начала с текущей датой. Я предоставил фрагмент кода, который может помочь вам в пути:)

function sv_edit_my_memberships_actions( $actions ) {
        // Get the current active user
        $user_id = wp_get_current_user();

        if(!$user_id) // No valid user, abort
            return $actions;

        // Only query active subscriptions
        $memberships_info = wc_memberships_get_user_active_memberships($user_id, array( 
            'status' => array( 'active' ),
        ));

        // Loop through each active subscription
        foreach ($memberships_info as $membership) {
            $subscription_start_date = date("Y/m/d", strtotime($membership->get_start_date()));
            //$subscription_end_date = date("Y/m/d", strtotime($membership->get_end_date()));
            //$subscription_name = $membership->get_plan()->get_name();
            //$subscription_id = $membership->get_plan()->get_id();

            if($subscription_id == 'YOUR_ID') { // Active subscription
                // Compare the starting date of the subscription with the current date
                $datetime1 = date_create($subscription_start_date);
                $datetime2 = date_create(date(time()));

                $interval = date_diff($datetime1, $datetime2);

                if($interval->format('%m') <= 11) {
                    // remove the "Cancel" action for members
                    unset( $actions['cancel'] );
                }
            }
        }
       return $actions;
    }

    add_filter( 'wc_memberships_members_area_my-memberships_actions', 'sv_edit_my_memberships_actions' );
    add_filter( 'wc_memberships_members_area_my-membership-details_actions', 'sv_edit_my_memberships_actions' );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...