获取用户发布次数最多的类别

时间:2014-08-31 作者:Christine Cooper

我正在列出与Users 在SE上单击此处。

在列出每个用户时,我想添加他们发布最多的两个类别。所有类别都在Posts.

性能至关重要,因此我提出了一个充分的解决方案:

生成函数(使用$user_id 作为参数),返回用户最常发布的两个类别的类别名称wp_schedule_event() WP Cron,它使用上述函数并获取所有用户各自的类别,最后通过以下方式将其添加到每个用户的元数据中add_user_meta().get_user_meta() 在用户页面上目前,我已经准备好了cron和元数据代码,all I am missing is the function that returns the users top 2 categories. 你能帮我完成这个功能吗?

2 个回复
最合适的回答,由SO网友:Stubbies 整理而成

这可以很容易地用$wpdb, 以下是我的方法:

function GetTop2CategoryByUser($user_id, $taxonomy){
    global $wpdb;

    $results=$wpdb->get_results( $wpdb->prepare( 
     "
       SELECT      tt.term_id as category, COUNT(p.ID) as count
       FROM        $wpdb->posts p

       JOIN        $wpdb->term_relationships tr 
                   ON p.ID = tr.object_id

       JOIN        $wpdb->term_taxonomy tt
                   ON tt.term_taxonomy_id = tr.term_taxonomy_id
                   AND (tt.taxonomy = %s AND tt.term_taxonomy_id != 1)

       WHERE       p.post_author = %s
       GROUP BY    tt.term_id
       ORDER BY    count DESC LIMIT 2
    ",
    $taxonomy,
    $user_id
   ) );
 return $results;
}

// Get user\'s top 2 published categories
$user_top_cat = GetTop2CategoryByUser($user_ID,$taxonomy)

// $results should return
Array
(
    [0] => stdClass Object
        (
            [term_id] => 4
            [count] => 8345
        )
    [1] => stdClass Object
        (
            [term_id] => 3
            [count] => 45345
        )
)
检索类别ID而不是名称会稍微快一些。

SO网友:Stubbies
<?php 

  $key = \'user_top_categories\'; // User meta key for the top categories
  $single = false; // Array or String
  $top_categories = get_user_meta( $user_id, $key, $single );

  foreach($top_categories as $top_cat){

     $term = get_term_by(\'name\', $top_cat, \'category\');
     $term_link = get_term_link( $term );

     echo \'<li><a href="\' . esc_url( $term_link ) . \'">\' . $term->name . 
          \' (\'. $term->count .\')</a></li>\';

  }

?>
结束

相关推荐

如果我将POSTS表中代表文章修订的所有行都删除到WordPress数据库中,会发生什么?

我对posts WordPress数据库的表。我看到,当我在这个表中创建一个新帖子时,会自动创建2个新行。32 1 2014-08-16 15:07:22 2014-08-16 15:07:22 TEST REVISION TEST REVISION inherit open open 31-revision-v1 2014-08-16 15:07:22 2014-08-16 15:07:22 31 http://localhost/w