web-dev-qa-db-fra.com

Prise en charge des types de publication personnalisés pour get_users ('orderby = post_count');

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>
6
Hassan

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');
1
Bainternet

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).

0
Peanuts