这是我得到的代码。它给出了一个给定作者发表的类别列表。然而,我非常希望在类别名称旁边有一个数字,告诉作者在不同类别中发表了多少文章。有人知道一个诀窍吗?谢谢!
<?php
$author = get_query_var('author');
$categories = $wpdb->get_results("
SELECT DISTINCT(terms.term_id) as ID, terms.name, terms.slug, tax.description
FROM $wpdb->posts as posts
LEFT JOIN $wpdb->term_relationships as relationships ON posts.ID = relationships.object_ID
LEFT JOIN $wpdb->term_taxonomy as tax ON relationships.term_taxonomy_id = tax.term_taxonomy_id
LEFT JOIN $wpdb->terms as terms ON tax.term_id = terms.term_id
WHERE 1=1 AND (
posts.post_status = 'publish' AND
posts.post_author = '$author' AND
tax.taxonomy = 'category' )
ORDER BY terms.name ASC
");
?>
<ul>
<?php foreach($categories as $category) : ?>
<li>
<a href="<?php echo get_category_link( $category->ID ); ?>" title="<?php echo $category->name ?>">
<?php echo $category->name.' '.$category->description; ?>
</a>
</li>
<?php endforeach; ?>
</ul>
编辑:
这个代码计算类别中的帖子,并且工作正常。我想把这个和上面的代码结合起来,但是我不知道怎么做...
<?php
$counter = "SELECT COUNT(*)
FROM $wpdb->posts
LEFT JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
LEFT JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
WHERE $wpdb->term_taxonomy.term_id = 412
AND $wpdb->term_taxonomy.taxonomy = 'category'
AND $wpdb->posts.post_status = 'publish'
AND post_author = '1'
";
$user_count = $wpdb->get_var($counter);
echo $user_count;
?>
3条答案
按热度按时间tuwxkamq1#
在SQL中存在
count()
函数,它可以计算行数。在你的例子中,我们想要帖子的数量,所以我们可以使用COUNT(posts.id)
,如下所示:您会注意到,我使用了和别名来重命名count列(否则,它的名称将是
count(posts.id)
--实际上并不实用)。我还删除了WHERE中的1=1
,因为它在这里没有用。h6my8fg22#
我想通了。。必须运行分离的SELECT函数:一个用于获取类别列表,然后该循环中的另一个函数用于计算类别中有多少个条目。我更喜欢把这两个循环合二为一,但这对我来说是可行的。
ruarlubt3#
我通常使用这个插件(http://wordpress.org/plugins/author-profiles/)在侧边栏中显示。我想这段代码会帮助任何人