Обновлено (с дополнительной настраиваемой функцией для вашего шорткода)
1) Следующая пользовательская функция, которая делает очень легкий запрос SQL, вернет массивИдентификаторы пользователей от всех активных подписчиков:
function get_active_subscribers_ids(){
global $wpdb;
// Return an array of user Ids active subscribers
return $wpdb->get_col( "
SELECT DISTINCT pm.meta_value
FROM {$wpdb->prefix}posts as p
JOIN {$wpdb->prefix}postmeta as pm
ON p.ID = pm.post_id
WHERE p.post_type = 'shop_subscription'
AND p.post_status = 'wc-active'
AND pm.meta_key = '_customer_user'
" );
}
Код находится в файле function.php вашей активной дочерней темы (или активной темы).Протестировано и работает.
2) Для вашего шорткода я изменил эту функцию, чтобы напрямую получать код display_name
и user_email
:
function get_all_active_subscribers(){
global $wpdb;
return $wpdb->get_results( "
SELECT DISTINCT u.*
FROM {$wpdb->prefix}posts as p
JOIN {$wpdb->prefix}postmeta as pm
ON p.ID = pm.post_id
JOIN {$wpdb->prefix}users as u
ON pm.meta_value = u.ID
WHERE p.post_type = 'shop_subscription'
AND p.post_status = 'wc-active'
AND pm.meta_key = '_customer_user'
" );
}
.PHP-файл вашей активной дочерней темы (или активной темы).Протестировано и работает.
Использование в вашем коротком коде:
function custom_get_members( ){
$output = '<ul>';
// Loop through active subscribers
foreach ( get_all_active_subscribers() as $user ) {
$output .= '<li>' . $user->display_name.'['.$user->user_email . ']</li>';
}
return $output . '</ul>';
}
add_shortcode( 'annuaire', 'custom_get_members' );
Протестировано и работает с более легким запросом и кодом.