WordPress:Author Templates

来自站长百科
跳转至: 导航、​ 搜索


Since the advent of Themes in WordPress 1.5, changing the look and feel of your WordPress site has become fairly straightforward. For instance, when a viewer clicks on a link to a post author, by default he or she is taken to a page listing the posts from that particular author in chronological order, from newest posts at the top to oldest at the bottom. There are many display choices, including whether to display the complete post or post excerpts, and what additional information to display (title, category, publish date, last modified time, etc.). Each theme makes different choices, and you might want to change them.

自从WordPress1.5版本的主题的产生,更改WordPress站点的外观和整体效果变得非常简单。例如,当一个访客点击链接,链接到文章作者的时候,默认情况下,他或者她会来到网页,上面按时间顺序列出了某个作者的所有文章,最新发表的文章在最上面,越早发表的文章在越需下面。文章可以以许多中方式显示,包括是否显示整篇文章还是显示文章摘录,显示什么样的额外信息(标题,类别,发表日期,最新更改的时间,等等)。每个主题都可以拥有许多不同的选择,而且你可能想要更改这些选择。

This article explains how to change what happens when the blog viewer is visiting one of your site's author pages. This involves the use of Themes and Template files, so if you are new to template files, you might want to read WordPress:Using Themes and WordPress:Stepping Into Templates first.

这篇文章解释了,博客访客访问其中的站点作者网页的时候,会出现什么情况。这包括使用主题和模板文件,因此,如果你是模板文件新手,你可能想要首先阅读使用主题走进模板

There are many ways that you can modify the look of your author pages. Some are not really specific to author pages, such as adding text to the top of the page; you can read about such simple modifications in the WordPress:Category Templates article. This article will concentrate on modifications that are specific to author template files.

你可以使用许多种方式更改作者网页的外观。有的方式不仅仅是关于作者网页的,例如向网页的顶端添加文本;你可以在类别模板文章中阅读这样简单的更改方面的内容。本篇文章突出关于作者模板文件方面的更改内容。

The Basics[ ]

基础内容[ ]

Linking to Author Pages from Posts[ ]

从文章中链接到作者网页[ ]

If you are going to use author pages, you will probably want to make sure that when a post is displayed, it comes with a link to the author page. You can generate this link, within WordPress:The Loop, by using the the_author_posts_link Template Tag. For example:

如果你准备使用作者网页,你可能想要确定文章什么时候显示,文章有一个链接链接到作者网页。你可以在The Loop内,通过使用the_author_posts_link模板标签,创建这个链接。例如:

<p>Written by: 
<?php the_author_posts_link(); ?></p>
<p>Written by: 
<?php the_author_posts_link(); ?></p>

Note: As of WP 2.1, the_author_link() no longer links to author pages - it links to the URL stored in that author's Profile page instead. the_author_posts_link() is currently the only way to link to a standard WP-generated author page.

注:从WP2.1版本开始,the_author_link()不再链接到作者网页-而是链接到储存在作者的基本资料网页中的URL。the_author_posts_link()是当前链接到标准的WP产生的作者网页的唯一方式。

List of Authors with Links[ ]

带有链接的作者列表[ ]

Another way to generate links to author pages is to make an author list in your sidebar (or elsewhere in your Theme). The wp_list_authors Template Tag does that. Just place the following in your sidebar Template file:

产生链接到作者网页的链接的另一种方式是在边栏中创建一个作者列表(或者在你的主题的其它位置创建一个作者列表)。wp_list_authors可以为你创建。只要将下面的内容放入你的边栏模板文件即可:

<h2>List of authors:</h2>
<ul>
<?php wp_list_authors(); ?>
</ul>


<h2>作者列表:</h2>
<ul>
<?php wp_list_authors(); ?>
</ul>

You may want to change the way the list of authors appears by using the arguments in wp_list_authors(). For example, the administrator account (Username "admin") is excluded by default, but you can force wp_list_authors() to include the admin account this way:

通过使用wp_list_authors()中的参数,你可能想要更改作者列表显示的方式。例如,管理员帐户(用户名 "管理")默认情况下,是删除的,但是你可以迫使wp_list_authors()以这种方式包含管理帐户:

<ul>
<?php wp_list_authors('exclude_admin=0'); ?>
</ul>


<ul>
<?php wp_list_authors('exclude_admin=0'); ?>
</ul>

You can also combine arguments. By default, authors without posts are ignored, but in this example, all authors (users), including the administrator, are displayed.

你也可以将参数结合起来。默认情况下,没写文章的作者就会被忽视,但是在这个例子中,所有的作者(用户),包括管理员,都得到了显示。

NOTE: in 2.1.2 using the exclude_admin function is irrelevant when setting hide_empty=0. Setting hide_empty to zero forces the admin account to be listed as well.

:在2.1.2版本中,设置hide_empty=0时,使用exclude_admin函数是不相关的。将hide_empty设置为零,也能够迫使管理帐户列出。

<ul>
<?php wp_list_authors('exclude_admin=0&hide_empty=0'); ?>
</ul>


<ul>
<?php wp_list_authors('exclude_admin=0&hide_empty=0'); ?>
</ul>

There are also other options -- check out the WordPress:Template Tags/wp_list_authors page.

也有一些其它的选项—查看WordPress:Template Tags/wp_list_authors网页。

What Template File is Used?[ ]

使用了什么模板文件?[ ]

Now that you have links to author pages, the next step in modifying what they look like is to figure out which of your theme's files is going to be used to display the posts. This is known as the WordPress:Template Hierarchy.

既然你已经拥有了链接,链接到另一个网页,下一步就是要更改网页的外观,想出使用哪种主题文件来显示文章。这也称为模板层级

In the case of authors, the hierarchy is fairly simple. The Template Hierarchy specifies that WordPress uses the first Template file it finds in your current Theme's directory from the following list:

  1. author.php
  2. archive.php
  3. index.php

对于作者方面,层级非常地简单。模板层级规定WordPress使用,WordPress在下面列表中你的当前主题目录中找到的第一个模板文件:

  1. author.php
  2. archive.php
  3. index.php

That is, if you do not have an author.php file, WordPress will check for archive.php, and so on.

就是说,如果你没有author.php文件,WordPress会查找archive.php,等等。

So, if you want to change the look of your author pages, you need to create an author.php file if it doesn't exist, by copying archive.php if that file exists, or index.php if it doesn't. The rest of the article assumes you are editing author.php.

因此,如果你想要更改作者网页的外观,如果author.php文件不存在,你需要创建author.php文件,如果author.php文件存在,你只要复制archive.php文件,或者文件不存在,复制index.php。文章的其余部分,是假定你正在编辑author.php

Custom Author Information[ ]

自定义作者信息[ ]

This section explores how to add information about the author, such as name, bio, and contact information, to an author page.

下面的部分关于怎样添加关于作者的信息,例如,名称,个人基本资料,联系信息,链接到作者网页。

Setting Up for Author Information[ ]

设置作者信息[ ]

The first thing you will need to do, in order to display author information on your author page, is edit your author template file(author.php, see above) so that it figures out which author is being viewed, and retrieves all the information about the author from the database (i.e. the information entered in the User administration screen of WordPress).

为了在作者网页上显示作者信息,你首先要做的是,编辑你的作者模板文件(author.php,请看上面的)这样就会了解正在查看哪个作者,并且从数据库中返回这个作者的所有信息(例如输入在WordPress用户管理界面的信息)。

This is done by setting up a variable called $curauth (Current Author). The usual way to do this isto put the following lines before WordPress:The Loop in your template file:

通过设置一个称为$curauth(当前作者)的参数,可以实现以上的操作。在模板文件The Loop之前,放入以下的这些命令行,能够实现操作:

<?php 
if(isset($_GET['author_name'])) :
$curauth = get_userdatabylogin($author_name); // NOTE: 2.0 bug requires get_userdatabylogin(get_the_author_login());
else :
$curauth = get_userdata(intval($author));
endif;
?>


<?php 
if(isset($_GET['author_name'])) :
$curauth = get_userdatabylogin($author_name); // NOTE: 2.0 bug requires get_userdatabylogin(get_the_author_login());
else :
$curauth = get_userdata(intval($author));
endif;
?>

There are other ways to receive the query and assign the value of $curauth, if the above does not work for you. For example try this code which should work in both WordPress Version 1.2 and WordPress Version 1.5 and higher.

如果上述操作不能够运行,还有其它的方式,能够得到查询,为$curauth赋予参数值。李李仁,试试这个代码,这个代码能够在WordPress1.2版本,1.5版本以及更高的版本中运行。

<?php
if(isset($_GET['author_name'])) :
$curauth = get_userdatabylogin($_GET['author_name']);
else :
$curauth = get_userdata($_GET['author']);
endif;
?>


<?php
if(isset($_GET['author_name'])) :
$curauth = get_userdatabylogin($_GET['author_name']);
else :
$curauth = get_userdata($_GET['author']);
endif;
?>


Or this example that only works in WordPress Version 1.5 and higher:

或者这个只在WordPress1.5版本或者更高的版本中运行的例子:

<?php
if(get_query_var('author_name')) :
$curauth = get_userdatabylogin(get_query_var('author_name'));
else :
$curauth = get_userdata(get_query_var('author'));
endif;
?>


<?php
if(get_query_var('author_name')) :
$curauth = get_userdatabylogin(get_query_var('author_name'));
else :
$curauth = get_userdata(get_query_var('author'));
endif;
?>

If the above fails to work for you, another option for WordPress 1.5 or above is the following:

如果上述仍然不能够使你成功地操作,还有一个关于WordPress1.5版本或者更高的版本的选项:

<?php
global $wp_query;
$curauth = $wp_query->get_queried_object();
?>


<?php
global $wp_query;
$curauth = $wp_query->get_queried_object();
?>

Using Author Information[ ]

使用作者信息[ ]

Now that you have the $curauth variable set up, you can use it to display all kinds of information about the author whose page is being displayed. For example, to display the author's nickname, in a format like "This is Joe's page", you could use:

既然你已经设置了$curauth变数,你可以使用这个变数,显示网页正在显示的作者的所有信息。例如,要显示作者的昵称,在一个格式"这是 Joe的网页",你可以使用:

<p>This is <?php echo $curauth->nickname; ?>'s page</p>
<p>这是<?php echo $curauth->nickname; ?>'s page</p>

Note that this must be placed after defining $curauth as in the previous section, and before WordPress:The Loop in your Template file.

注意,上述必须放在$curauth定义为一个先前的部分之后,放在你的模板文件The Loop 之前

There are many other pieces of information you can display, besides the author's nickname. All of these come from the WordPress user editing screen. For WordPress 2.0 and higher, you can use the following:

除了作者昵称之外,你也可以显示许多其它的信息。所有的这些信息都来自WordPress用户管理界面。对于WordPress2.0以及更高的版本,你可以使用以下的:

  • $curauth->aim;
  • $curauth->description;
  • $curauth->display_name;
  • $curauth->first_name;
  • $curauth->ID;
  • $curauth->jabber;
  • $curauth->last_name;
  • $curauth->nickname;
  • $curauth->user_email;
  • $curauth->user_login;
  • $curauth->user_nicename;
  • $curauth->user_registered;
  • $curauth->user_url;
  • $curauth->yim;


  • $curauth->aim;
  • $curauth->description;
  • $curauth->display_name;
  • $curauth->first_name;
  • $curauth->ID;
  • $curauth->jabber;
  • $curauth->last_name;
  • $curauth->nickname;
  • $curauth->user_email;
  • $curauth->user_login;
  • $curauth->user_nicename;
  • $curauth->user_registered;
  • $curauth->user_url;
  • $curauth->yim;

And for WordPress 1.2 and 1.5: 对于WordPress1.2和1.5版本:

  • $curauth->user_aim;
  • $curauth->user_description;
  • $curauth->user_email;
  • $curauth->user_firstname;
  • $curauth->user_icq;
  • $curauth->user_lastname;
  • $curauth->user_level;
  • $curauth->user_login;
  • $curauth->user_msn;
  • $curauth->user_nickname;
  • $curauth->user_url;
  • $curauth->user_yim;


  • $curauth->user_aim;
  • $curauth->user_description;
  • $curauth->user_email;
  • $curauth->user_firstname;
  • $curauth->user_icq;
  • $curauth->user_lastname;
  • $curauth->user_level;
  • $curauth->user_login;
  • $curauth->user_msn;
  • $curauth->user_nickname;
  • $curauth->user_url;
  • $curauth->user_yim;

These work the same way as the nickname example above. For instance, to display the author's displayed name and description (i.e. "About Yourself" text):

这些与上述的昵称名运行方式是相同的。例如,要显示作者的显示名和描述(例如"关于你自己"文本):

<p><?php echo $curauth->display_name; ?><br />
<?php echo $curauth->description; ?></p>
<p><?php echo $curauth->display_name; ?><br />
<?php echo $curauth->description; ?></p>

Sample Template File[ ]

简单的模板文件[ ]

Here is a complete sample author.php file, which you can use as an example:

下面是一个完全的样本author.php文件,你可以使用这个文件作为例子:

<?php get_header(); ?>
   <div id="content" class="narrowcolumn">
      <!-- This sets the $curauth variable -->
<?php
if(isset($_GET['author_name'])) :
$curauth = get_userdatabylogin($author_name);
else :
$curauth = get_userdata(intval($author));
endif;
?>

<h2>About: <?php echo $curauth->nickname; ?></h2>
<dl>
<dt>Website</dt>
<dd><a href="<?php echo $curauth->user_url; ?>"><?php echo $curauth->user_url; ?></a></dd>
<dt>Profile</dt>
<dd><?php echo $curauth->user_description; ?></dd>
</dl>

<h2>Posts by <?php echo $curauth->nickname; ?>:</h2>

<ul>
<!-- The Loop -->
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  <li>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">
<?php the_title(); ?></a>, 
<?php the_time('d M Y'); ?> in <?php the_category('&');?>
  </li>

  <?php endwhile; else: ?>
     <p><?php _e('No posts by this author.'); ?></p>

	<?php endif; ?>
<!-- End Loop -->
</ul>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>





<?php get_header(); ?>
   <div id="content" class="narrowcolumn">
      <!-- This sets the $curauth variable -->
<?php
if(isset($_GET['author_name'])) :
$curauth = get_userdatabylogin($author_name);
else :
$curauth = get_userdata(intval($author));
endif;
?>

<h2>About: <?php echo $curauth->nickname; ?></h2>
<dl>
<dt>Website</dt>
<dd><a href="<?php echo $curauth->user_url; ?>"><?php echo $curauth->user_url; ?></a></dd>
<dt>Profile</dt>
<dd><?php echo $curauth->user_description; ?></dd>
</dl>

<h2>Posts by <?php echo $curauth->nickname; ?>:</h2>

<ul>
<!-- The Loop -->
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
  <li>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link: <?php the_title(); ?>">
<?php the_title(); ?></a>, 
<?php the_time('d M Y'); ?> in <?php the_category('&');?>
  </li>

  <?php endwhile; else: ?>
     <p><?php _e('No posts by this author.'); ?></p>

	<?php endif; ?>
<!-- End Loop -->
</ul>
</div>
<?php get_sidebar(); ?>
<?php get_footer(); ?>






Further Reading[ ]

深入阅读[ ]

  • 模板 –完成参考列表,来创建主题和模板文件
  • Kafkaesquí's Get Author Profile Plugin will also access the author information and allows you to provide author information outside of the Loop, such as for a sidebar intro of the blog owner or to list contributors to your blog.