Обнаружение, если текущий пользователь имеет активную подписку

Я разрабатываю веб-сайт в WordPress с WooCommerce. Я использую дополнительно платные листы WC и плагины подписки WooCommerce для обработки моей работы.

Проблема заключается в том, что пользователь с ролью «подписчика» с активным подпиской на подписку и пытается размещать контент каждый раз, когда он / она должен выбрать пакет, даже если у него активная подписка.

Есть ли кто-нибудь с идеей о том, как определить, имеет ли пользователь активную подписку , если он возвращает true, тогда шаг выбора пакета пропущен?

Благодарю.

Вот пользовательская условная функция, которая имеет необязательный аргумент $ user_id (определенный user_id) .

Эта условная функция вернет true если текущий пользователь (или определенный пользователь) имеет активные подписки:

 function has_active_subscription( $user_id=null ) { // if the user_id is not set in function argument we get the current user ID if( null == $user_id ) $user_id = get_current_user_id(); // Get all active subscrptions for a user ID $active_subscriptions = get_posts( array( 'numberposts' => -1, 'meta_key' => '_customer_user', 'meta_value' => $user_id, 'post_type' => 'shop_subscription', // Subscription post type 'post_status' => 'wc-active', // Active subscription ) ); // if if(!empty($active_subscriptions)) return true; else return false; } 

Код идет в файле function.php вашей активной дочерней темы (или темы), а также в любом файле плагина.


Обновление использования:

1) ИСПОЛЬЗОВАНИЕ для текущего пользователя:

 if( has_active_subscription() ){ // Current user has an active subscription // do something … here goes your code // Example of displaying something echo '<p>I have active subscription</p>'; } 

2) ИСПОЛЬЗОВАНИЕ для определенного идентификатора пользователя:

 if( has_active_subscription(26) ){ // Defined User ID has an active subscription // do something … here goes your code // Example of displaying something echo '<p>User ID "26" have an active subscription</p>'; } 

Этот код проверен и работает


Похожие ответы:

  • Подписки WooCommerce – проверьте, есть ли у продукта активный абонент
  • WooCommerce – получать активные подписки в списке между датой начала и окончания

Использовать wcs_user_has_subscription()

 $has_sub = wcs_user_has_subscription( '', '', 'active' ); if ( $has_sub) { // User have active subscription } 

Для получения дополнительной информации проверьте, имеет ли пользователь активную подписку .