Я работаю над проектом, который использует WooCommerce и плагин All Products for WooCommerce Subscription, позволяющий нашим пользователям подписаться на подписку и получить скидку. Мы хотели бы установить минимальный период времени, в течение которого клиенты должны будут подписаться на подписку. Я провел небольшое исследование по этому поводу, и похоже, что официальный плагин WooCommerce просто скрывает кнопку «отменить» на панели управления подпиской пользователя до тех пор, пока он не достигнет назначенного срока. Конечно, они взимают с вас плату за эту функцию, и кажется, что должно быть очень просто скрыть кнопку отмены, пока их подписка не будет активна в течение определенного периода времени, но я не могу найти список перехватчиков, имеющих что связано с подписками WooCommerce. Как мне проверить первоначальную дату активации подписки, а затем на основе этого скрыть кнопку отмены?
Я попробовал это, чтобы проверить скрытие кнопки отмены, но кнопка отмены все равно отображается:
add_filter('woocommerce_subscriptions_admin_order_item_actions', 'hide_cancel_button_if_less_than_3_weeks_active', 10, 2);
function hide_cancel_button($actions, $subscription) {
unset($actions['cancel']);
return $actions;
}
Вместо этого вы можете попробовать использовать фильтр wcs_view_subscription_actions
следующим образом:
add_filter('wcs_view_subscription_actions', 'delay_user_action_cancel_button', 10, 3 );
function delay_user_action_cancel_button( $actions, $subscription, $user_id ) {
// Check that 'cancel' action button is active
if ( ! isset($actions['cancel']) ) return $actions;
$start_date = $subscription->get_date('start'); // Get the start date
$days_period = 15; // Here define the "designated time limit" in days
if ( strtotime($start_date) + ( $days_period * DAY_IN_SECONDS ) >= time() ) {
unset($actions['cancel']);
}
return $actions;
}
Код находится в файле function.php вашей дочерней темы (или в плагине). Это может сработать.