デフォルトの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>
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');
少し遅れていますが、将来的に誰かがそれを必要とする場合に備えて。ユーザーの通常の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;
これにより、投稿またはカスタム投稿タイプ(あるいはその両方)を公開した著者を表示できるはずです。