La fonction WordPress par défaut get_users('orderby=post_count');
ordonne uniquement aux utilisateurs le nombre de posts qu'ils ont créés.
Avez-vous une idée de la façon de modifier cela pour prendre également en charge les types de publication personnalisés?
METTRE À JOUR:
Je souhaite uniquement interroger les publications de type "company-item". Actuellement, cet extrait se trouve dans mon fichier functions.php:
function user_query_count_post_type($args) {
$args->query_from = str_replace("post_type = post AND", "post_type IN ('company-item') AND ", $args->query_from);
}
Et ceci est dans mon modèle de page:
<ul>
<?php
add_action('pre_user_query','user_query_count_post_type');
$showrooms = get_users('orderby=post_count&role=company&order=desc');
remove_action('pre_user_query','user_query_count_post_type');
foreach ($showrooms as $showroom) : ?>
<li>
<a href="<?php echo get_author_posts_url( $showroom->id ); ?>" ><img src="<?php echo $showroom->company_logo; ?>" title="<?php echo $showroom->company_name; ?>" /></a>
</li>
<?php endforeach; ?>
</ul>
vous pouvez essayer de remplacer la clause where de la requête en vous connectant à pre_user_query
. Quelque chose comme:
function user_query_count_post_type($args){
$args->query_from = str_replace("post_type = post AND", "post_type IN ('post','cpt') AND ", $args->query_from);
}
Utilisation ex:
add_action('pre_user_query','user_query_count_post_type');
$users = get_users('orderby=post_count');
remove_action('pre_user_query','user_query_count_post_type');
Un peu tard mais au cas où quelqu'un en aurait besoin pour l'avenir. Vous pouvez ajouter un get_posts
à l'intérieur de la foreach
normale pour les utilisateurs, afin de vérifier si un utilisateur donné a publié des éléments sur des publications, OR sur le CPT souhaité:
if ( ! function_exists( 'contributors_author_list' ) ) :
function contributors_author_list() {
$contributor_ids = get_users( array(
'fields' => 'ID',
'orderby' => 'post_count',
'order' => 'DESC',
'who' => 'authors',
'number' => '100'
) );
foreach ( $contributor_ids as $contributor_id ) :
$argos = array( 'author' => $contributor_id, 'post_type'=> array('post','CHANGE-HERE-YOUR-CPT') ); //change here the CPT
$userposts = get_posts($argos);
$count=count($userposts);
if ($count) {
?>
<!-- HTML stuff -->
<?php
}
endforeach;
}
endif;
De cette façon, vous devriez pouvoir afficher les auteurs ayant publié des publications ou des types de publication personnalisés (ou les deux).