Получите всех активных пользователей для участия в плане членства в Woocommerce


Я использую Wordpress версии 4.9.4 с Woocommerce Плагин членства в Woocommerce.

Как я могу получить всех пользователей для определенного плана членства ($членства)?

Есть ли крючок или мне следует использовать необработанный запрос?

В документации говорится, что планы/членства относятся к типу сообщений, поэтому я попытался запросить эту таблицу:

SELECT jsu.id, jsu.user_email, jsu.display_name, jsp.post_title, jsp.post_type FROM `wp_users` jsu
LEFT JOIN `wp_posts` jsp ON (jsu.id = jsp.post_author)
LEFT JOIN `wp_usermeta` jsum ON (jsu.id = jsum.user_id)
WHERE jsp.post_title IN ($memberships) AND post_type = 'wc_membership_plan'

Но я не получаю желаемого результата.

Author: LoicTheAztec, 2018-03-12

1 answers

Я внес некоторые изменения в ваш SQL и установил код в служебной функции:

function get_active_members_for_membership($memberships){
    global $wpdb;

    // Getting all User IDs and data for a membership plan
    return $wpdb->get_results( "
        SELECT DISTINCT um.user_id, u.user_email, u.display_name, p2.post_title, p2.post_type
        FROM {$wpdb->prefix}posts AS p
        LEFT JOIN {$wpdb->prefix}posts AS p2 ON p2.ID = p.post_parent
        LEFT JOIN {$wpdb->prefix}users AS u ON u.id = p.post_author
        LEFT JOIN {$wpdb->prefix}usermeta AS um ON u.id = um.user_id
        WHERE p.post_type = 'wc_user_membership'
        AND p.post_status IN ('wcm-active')
        AND p2.post_type = 'wc_membership_plan'
        AND p2.post_title LIKE '$memberships'
    ");
}

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

ИСПОЛЬЗОВАНИЕ:

// Replace 'My Membership' by your targeted membership name.
$users_data = get_active_members_for_membership('My Membership');

// Test raw output
echo '<pre>'; print_r( $users_data ); echo '</pre>';
 1
Author: LoicTheAztec, 2018-03-13 07:39:59