web-dev-qa-db-ja.com

Get_users( 'orderby = post_count')に対するカスタム投稿タイプのサポート。

デフォルトのWordPress関数get_users('orderby=post_count');は、ユーザーにpostsの数で注文します。

カスタム投稿タイプもサポートするようにこれを変更する方法がありますか?

更新:

タイプ "company-item"の投稿のみを照会したいです。現在、このスニペットは私の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);
  }

そしてこれは私のページテンプレートにあります:

<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

pre_user_queryにフックすることで、クエリのwhere句を置き換えることができます。何かのようなもの:

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);
}

使用例:

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

少し遅れていますが、将来的に誰かがそれを必要とする場合に備えて。ユーザーの通常のforeach内にget_postsを追加して、特定のユーザーが投稿に公開されているものがあるかどうかを確認することができます。希望するCPTでOR:

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;

これにより、投稿またはカスタム投稿タイプ(あるいはその両方)を公開した著者を表示できるはずです。

0
Peanuts