这对于包含Co-Authors Plus 但是你不能总是依赖插件开发者来预测我们的所有需求。有时我们只需要为自己建造!:-)
(来源:mikeschinkel.com)
共同作者存储为分类术语\'author\'
事实证明,你想做的并不难。我要赞扬插件开发人员使用了我认为最好的实践;他们创建了一个名为
\'author\'
对于他们使用的术语名称,作者
user_login
领域
使用get_terms()
要获取共同作者列表,只需调用WordPress核心函数即可轻松获取作者列表get_terms()
通过分类法\'author\'
并指定您只需要术语\'name\'
领域
作者ID列表需要直接SQL,不幸的是,WordPress core没有提供基于user_login
直接SQL以外的值。
我们的get_coauthor_list()
函数一起,我们可以创建get_coauthor_list()
函数返回所有可用共同作者的作者ID列表。下面是代码(您可以将其添加到主题模板文件的底部,或者更好地将其放入主题的functions.php
文件,或者更好的方法是让合著者和其他人添加到他们的插件中):
function get_coauthor_list() {
global $wpdb;
$authors = implode("\',\'",get_terms(\'author\',array(\'fields\'=>\'names\')));
$sql = "SELECT ID " .
"FROM {$wpdb->users} " .
"WHERE user_login IN (\'{$authors}\') " .
"ORDER BY display_name";
return $wpdb->get_col($sql);
}
使用
get_coauthor_list()
在您的主题中,只需将其添加到主题模板文件中即可。我稍微修改了您的代码以使用
get_coauthor_list()
并遵循一些最佳做法,例如使用
get_author_posts_url()
WordPress core中的函数:
<h2>Archives by Author:</h2>
<?php
$authors = get_coauthor_list();
if($authors)
foreach($authors as $author_id):
?>
<div class="author" id="author-<?php the_author_meta(\'user_login\', $author_id); ?>">
<h3>
<a href="<?php echo get_author_posts_url($author_id); ?>">
<?php the_author_meta(\'display_name\', $author_id); ?>
</a>
</h3>
<div class="description">
<p>
<?php if($author_description = get_the_author_meta(\'description\',$author_id)): ?>
<?php echo $author_description; ?>
<?php else : ?>
No description in the author\'s profile.
<?php endif; ?>
</p>
</div>
</div>
<?php
endforeach;
?>
当一切都说了又做了的时候,看起来是这样的:
(来源:mikeschinkel.com)
P.S. 具有讽刺意味的是,为了让你明白这一点,我不得不安装插件,然后需要我调试插件(结果是无关紧要的)插件激活错误消息,导致我提交this bug report; 希望他们能在将来的版本中纠正这个错误。