Статьи

Как создать шаблон страницы автора WordPress

Если вы используете веб-сайт с несколькими авторами, вы можете рассмотреть возможность добавления шаблона автора на свой веб-сайт. Авторские шаблоны помогают представить больше информации об авторах и облегчают посетителям поиск других статей, написанных автором. В этом посте мы разберем шаблон автора и покажем, как его можно улучшить.


Шаблон author.php раньше был запоздалой мыслью для большинства разработчиков тем, но теперь они осознают важность включения хорошего шаблона author.php в свои дизайны и отображения не только предыдущих сообщений автора.

Если вы нажмете на ссылку автора на веб-сайте WordPress, и она покажет только выдержки из их предыдущих сообщений, вероятно, тема не имеет шаблона author.php. Выдержки показаны из-за иерархии шаблонов для авторов:

  1. author- {nicename} .php
  2. author- {ID} .php
  3. author.php
  4. archive.php
  5. index.php

Говоря простым языком, WordPress сначала ищет шаблоны, специально созданные для отдельных авторов, такие как author-kevin.php или author-24.php (примечание: nicename установлено в соответствии с соответствующим именем пользователя). Если для этого автора не было специально создано ни одного шаблона, WordPress отобразит информацию об авторах с использованием шаблона author.php (что мы и рассматриваем сегодня). Если не найден ни один авторский шаблон какого-либо описания, WordPress по умолчанию использует шаблон archive.php, а затем шаблон index.php (если шаблон архива не существует).

давайте кратко рассмотрим, как можно ссылаться на страницу автора. Чтобы добавить ссылку на страницу авторов, просто используйте тег the_author_posts_link в любом месте цикла .

1
<?php the_author_posts_link();

Еще одна полезная функция — тег wp_list_authors . Как следует из названия, он генерирует список всех авторов на вашем сайте. Его не нужно размещать внутри цикла, поэтому его можно разместить в любом месте на вашем сайте, например, на боковой панели, в нижнем колонтитуле и т. Д.

1
<?php wp_list_authors();

По умолчанию тег исключает учетную запись администратора из списка и пользователей, у которых нет сообщений. Вот несколько примеров использования wp_list_authors ():

1
<?php wp_list_authors(‘hide_empty=0’);

Показать всех пользователей, включая тех, у кого нет сообщений.

1
<?php wp_list_authors(‘show_fullname=1&optioncount=1’);

Показать количество сообщений и полное имя каждого пользователя.

1
<?php wp_list_authors(‘orderby=post_count&order=DESC&number=10’);

Отображение первой десятки пользователей в порядке убывания.


Я всегда находил лучший способ понять, как работает конкретный тип шаблона, это посмотреть на пример и разбить его, чтобы вы могли понять каждую его часть. Шаблон Twenty Ten author.php — хорошее введение в работу этого шаблона, однако для этой статьи я решил использовать текущую стандартную тему WordPress Twenty Eleven, так как она более актуальна.

Шаблон отображает биографию автора в верхней части страницы. Биография довольно проста, показывает только граватару авторов с левой стороны и био информацию авторов справа.

Все посты авторов отображаются под био разделом. Эта область работает так же, как шаблон archive.php. Количество сообщений, перечисленных на странице, определяется количеством сообщений на странице, которое вы установили на www.yoursite.com/wp-admin/options-reading.php.

Ниже вы увидите полный код шаблона Twenty Eleven author.php:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php<br />
/**<br />
 * The template for displaying Author Archive pages.<br />
 *<br />
 * @package WordPress<br />
 * @subpackage Twenty_Eleven<br />
 * @since Twenty Eleven 1.0<br />
 */<br />
<br />
get_header();
<br />
        <section id=»primary»><br />
            <div id=»content» role=»main»><br />
<br />
            <?php if ( have_posts() ) : ?><br />
<br />
                <?php<br />
                    /* Queue the first post, that way we know<br />
                     * what author we’re dealing with (if that is the case).<br />
                     *<br />
                     * We reset this later so we can run the loop<br />
                     * properly with a call to rewind_posts().<br />
                     */<br />
                    the_post();<br />
                ?><br />
<br />
                <header class=»page-header»><br />
                    <h1 class=»page-title author»><?php printf( __( ‘Author Archives: %s’, ‘twentyeleven’ ), ‘<span class=»vcard»><a class=»url fn n» href=»‘ . esc_url( get_author_posts_url( get_the_author_meta( «ID» ) ) ) . ‘» title=»‘ . esc_attr( get_the_author() ) . ‘» rel=»me»>’ . get_the_author() . ‘</a>
                </header><br />
<br />
                <?php<br />
                    /* Since we called the_post() above, we need to<br />
                     * rewind the loop back to the beginning that way<br />
                     * we can run the loop properly, in full.<br />
                     */<br />
                    rewind_posts();<br />
                ?><br />
<br />
                <?php twentyeleven_content_nav( ‘nav-above’ );
<br />
                <?php<br />
                // If a user has filled out their description, show a bio on their entries.<br />
                if ( get_the_author_meta( ‘description’ ) ) : ?><br />
                <div id=»author-info»><br />
                    <div id=»author-avatar»><br />
                        <?php echo get_avatar( get_the_author_meta( ‘user_email’ ), apply_filters( ‘twentyeleven_author_bio_avatar_size’, 60 ) );
                    </div><!— #author-avatar —><br />
                    <div id=»author-description»><br />
                        <h2><?php printf( __( ‘About %s’, ‘twentyeleven’ ), get_the_author() );
                        <?php the_author_meta( ‘description’ );
                    </div><!— #author-description —><br />
                </div><!— #entry-author-info —><br />
                <?php endif;
<br />
                <?php /* Start the Loop */ ?><br />
                <?php while ( have_posts() ) : the_post();
<br />
                    <?php<br />
                        /* Include the Post-Format-specific template for the content.<br />
                         * If you want to overload this in a child theme then include a file<br />
                         * called content-___.php (where ___ is the Post Format name) and that will be used instead.<br />
                         */<br />
                        get_template_part( ‘content’, get_post_format() );<br />
                    ?><br />
<br />
                <?php endwhile;
<br />
                <?php twentyeleven_content_nav( ‘nav-below’ );
<br />
            <?php else : ?><br />
<br />
                <article id=»post-0″ class=»post no-results not-found»><br />
                    <header class=»entry-header»><br />
                        <h1 class=»entry-title»><?php _e( ‘Nothing Found’, ‘twentyeleven’ );
                    </header><!— .entry-header —><br />
<br />
                    <div class=»entry-content»><br />
                        <p><?php _e( ‘Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.’, ‘twentyeleven’ );
                        <?php get_search_form();
                    </div><!— .entry-content —><br />
                </article><!— #post-0 —><br />
<br />
            <?php endif;
<br />
            </div><!— #content —><br />
        </section><!— #primary —><br />
<br />
<?php get_sidebar();
<?php get_footer();

Не беспокойтесь, если приведенный выше код немного перегружен. Мы рассмотрим основную часть этого шаблона (т. Е. Все, что находится между <div id = «content» role = «main»> и </ div> <! — #content -> через секунду. Как только вы разбьете его вниз вы найдете это довольно прямо.

Чтобы отобразить информацию об авторе (например, его имя, URL-адрес и биографию) и перечислить публикации авторов, необходимо запустить цикл WordPress . Все, что находится внутри цикла, будет отображаться на каждой странице архива автора (т. Е. На страницах 1, 2, 3 и т. Д.).

01
02
03
04
05
06
07
08
09
10
11
<?php if ( have_posts() ) : ?><br />
<br />
                <?php<br />
                    /* Queue the first post, that way we know<br />
                     * what author we’re dealing with (if that is the case).<br />
                     *<br />
                     * We reset this later so we can run the loop<br />
                     * properly with a call to rewind_posts().<br />
                     */<br />
                    the_post();<br />
                ?>

Вверху страниц автора на странице «Двадцать одиннадцать» отображается надпись «АВТОРСКИЕ АРХИВЫ», за которой следует ссылка на профиль авторов. На главной странице автора эта ссылка довольно бесполезна, поскольку она ссылается на текущую страницу, однако на страницах архива автора (например, http://www.yoursite.com/author/admin/page/2/) эта ссылка помогает посетителям вернуться к Первая страница автора.

Twenty Eleven использует функцию get_author_posts_url для ссылки на страницу автора (она передает идентификатор автора этой функции, вызывая get_the_author_meta ). Он также использует get_the_author для отображения имени автора.

1
2
3
<header class=»page-header»><br />
                    <h1 class=»page-title author»><?php printf( __( ‘Author Archives: %s’, ‘twentyeleven’ ), ‘<span class=»vcard»><a class=»url fn n» href=»‘ . esc_url( get_author_posts_url( get_the_author_meta( «ID» ) ) ) . ‘» title=»‘ . esc_attr( get_the_author() ) . ‘» rel=»me»>’ . get_the_author() . ‘</a>
                </header>

Когда мы использовали цикл WordPress для отображения ссылки на профиль автора в верхней части страницы, нам нужно сбросить сообщения с помощью функции rewind_posts .

1
2
3
4
5
6
7
<?php<br />
                    /* Since we called the_post() above, we need to<br />
                     * rewind the loop back to the beginning that way<br />
                     * we can run the loop properly, in full.<br />
                     */<br />
                    rewind_posts();<br />
                ?>

В верхней и нижней части страницы автора вы увидите ссылки на старые и новые посты. Twenty Eleven отображает эти ссылки, используя функцию twentyeleven_content_nav.

1
<?php twentyeleven_content_nav( ‘nav-above’ );

Передача параметра nav-выше через функцию отображает верхнюю навигацию, тогда как навигация ниже показывает навигационные ссылки для нижней части страницы.

1
<?php twentyeleven_content_nav( ‘nav-below’ );

Подробности о функции twentyeleven_content_nav можно найти в шаблоне функций темы Twenty Eleven (functions.php). Функция использует previous_posts_link и next_posts_link для отображения навигационных ссылок и обеспечивает отсутствие навигации в верхней части 1-й страницы. Также стилизует ссылки; выравнивание старых постов слева и новых постов справа.

Если вы хотите добавить навигацию к своему шаблону автора, вы можете либо обернуть разделение CSS вокруг функций previous_posts_link и next_posts_link и стилизовать их, либо, если вы предпочитаете, использовать плагин навигации, например WP PageNavi, чтобы выполнить эту работу за вас.

Чтобы отобразить информацию об авторе, мы используем функцию get_the_author_meta (вы можете вспомнить, что мы ранее также использовали эту функцию с функцией get_author_posts_url для ссылки на страницу автора). Биография отображается в верхней части любой страницы автора, и оператор if гарантирует, что, если био не было введено пользователем, биография не будет отображаться.

Функция get_the_author снова используется для отображения имени авторов в био-заголовке, а get_avatar — для отображения Gravatar пользователей (параметр user_email используется с get_the_author_meta, чтобы функция get_avatar знала адрес электронной почты авторов).

01
02
03
04
05
06
07
08
09
10
11
12
13
<?php<br />
                // If a user has filled out their description, show a bio on their entries.<br />
                if ( get_the_author_meta( ‘description’ ) ) : ?><br />
                <div id=»author-info»><br />
                    <div id=»author-avatar»><br />
                        <?php echo get_avatar( get_the_author_meta( ‘user_email’ ), apply_filters( ‘twentyeleven_author_bio_avatar_size’, 60 ) );
                    </div><!— #author-avatar —><br />
                    <div id=»author-description»><br />
                        <h2><?php printf( __( ‘About %s’, ‘twentyeleven’ ), get_the_author() );
                        <?php the_author_meta( ‘description’ );
                    </div><!— #author-description —><br />
                </div><!— #entry-author-info —><br />
                <?php endif;

Двадцать одиннадцать отображает сообщения автора с помощью функции get_template_part . Это позволяет загружать шаблон, созданный специально для отображения сообщений, непосредственно в шаблон автора.

Выяснив формат поста с помощью функции get_post_format , тема позволяет отображать посты разных типов по мере их посещения . Например, если сообщение было установлено как изображение, будет использоваться шаблон content-image.php. Аналогичным образом, можно использовать шаблон content-link.php, если формат был задан как ссылка.

01
02
03
04
05
06
07
08
09
10
11
    <?php while ( have_posts() ) : the_post();
<br />
                    <?php<br />
                        /* Include the Post-Format-specific template for the content.<br />
                         * If you want to overload this in a child theme then include a file<br />
                         * called content-___.php (where ___ is the Post Format name) and that will be used instead.<br />
                         */<br />
                        get_template_part( ‘content’, get_post_format() );<br />
                    ?><br />
<br />
                <?php endwhile;

Если для автора не найдено результатов, отображается сообщение, побуждающее пользователя использовать поисковую форму ниже для повторного поиска.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
<?php else : ?><br />
<br />
                <article id=»post-0″ class=»post no-results not-found»><br />
                    <header class=»entry-header»><br />
                        <h1 class=»entry-title»><?php _e( ‘Nothing Found’, ‘twentyeleven’ );
                    </header><!— .entry-header —><br />
<br />
                    <div class=»entry-content»><br />
                        <p><?php _e( ‘Apologies, but no results were found for the requested archive. Perhaps searching will help find a related post.’, ‘twentyeleven’ );
                        <?php get_search_form();
                    </div><!— .entry-content —><br />
                </article><!— #post-0 —><br />
<br />
            <?php endif;

Как и любой шаблон WordPress, файл author.php может быть настроен настолько, насколько вам нужно. Вы можете создать что-то похожее на авторский шаблон Twenty Eleven и перечислить основную биографию вверху каждой страницы и составить список публикаций так же, как вы делаете это в архивах категорий. Кроме того, вы можете расширить область биографии и указать их адрес электронной почты, информацию о мессенджере (например, Google Talk) и дату, когда вы зарегистрировались, и создать уникальный шаблон для отображения сообщений автора.

Область био очень легко изменить. Всю информацию, введенную автором в свой профиль, можно вызвать с помощью функции get_the_author_meta . В эту функцию можно передать два параметра: $ field и $ userID.

1
<?php get_the_author_meta( $field, $userID );

$ field — это имя данных, которые будут возвращены, в то время как $ userID позволяет вам возвращать данные от конкретного автора. Параметр User ID используется только вне цикла . Нам все равно не нужно его использовать, так как мы вызываем эту функцию из цикла, поэтому WordPress знает пользователя, для которого мы хотим вызвать информацию.

Вот список всех параметров, которые вы можете вызвать с помощью get_the_author_meta:

  • <? php the_author_meta (‘user_login’); ?> — Отображает логин автора.
  • <? php the_author_meta (‘user_pass’); ?> — Отображает пароль автора в шестнадцатеричной форме
  • <? php the_author_meta (‘user_nicename’); ?> — Отображает никнейм авторов (такой же, как их логин)
  • <? php the_author_meta (‘user_email’); ?> — Отображает адрес электронной почты авторов.
  • <? php the_author_meta (‘user_url’); ?> — Отображает URL авторов.
  • <? php the_author_meta (‘user_registered’); ?> — Отображает дату, когда автор зарегистрировался на вашем сайте.
  • <? php the_author_meta (‘user_activation_key’); ?> — Отображает ключ активации авторов (если применимо).
  • <? php the_author_meta (‘user_status’); ?> — Отображает статус пользователя авторов, например, пользователь, который подтвердил аккаунт, имеет статус пользователя 2.
  • <? php the_author_meta (‘display_name’); ?> — Отображает имя, которое автор выбрал для публичного показа.
  • <? php the_author_meta (‘ник’); ?> — Отображает никнейм авторов.
  • <? php the_author_meta (‘first_name’); ?> — Отображает имя автора.
  • <? php the_author_meta (‘last_name’); ?> — Отображение фамилии авторов.
  • <? php the_author_meta (‘описание’); ?> — Отображение биографии авторов.
  • <? php the_author_meta (‘jabber’); ?> — Отображает контактную информацию авторов Jabber / Google Talk.
  • <? php the_author_meta (‘цель’); ?> — Отображение контактной информации авторов AIM.
  • <? php the_author_meta (‘yim’); ?> — Отображает контактную информацию авторов Yahoo Messenger.
  • <? php the_author_meta (‘user_level’); ?> — Отображает уровень пользователя авторов (например, администратор уровня 10, подписчики уровня 0).
  • <? php the_author_meta (‘user_firstname’); ?> — Отображает имя автора.
  • <? php the_author_meta (‘user_lastname’); ?> — Отображение фамилии авторов.
  • <? php the_author_meta (‘user_description’); ?> — Отображение биографии авторов.
  • <? php the_author_meta (‘rich_editing’); ?> — Отображает true, если автор использует визуальный редактор, и false, если они его отключили.
  • <? php the_author_meta (‘comment_shortcuts’); ?> — Отображает true, если у автора включены сочетания клавиш, и false, если они не включены.
  • <? php the_author_meta (‘admin_color’); ?> — Отображает цветовую схему, выбранную автором для области администратора (классическая для синего и свежая для серого).
  • <? php the_author_meta (‘ID’); ?> — Отображение идентификатора автора.

Как мы видели ранее, большинство основных шаблонов авторов просто отображают граватару авторов с одной стороны и биографию авторов с другой. Вы можете легко оживить это с помощью CSS. Например, вы можете разместить информационное поле с одной стороны, отображающее контактную информацию пользователей (электронная почта, Google Talk и т. Д.), А другое — полное имя пользователя и адрес веб-сайта.

Если вы хотите создать согласованный внешний вид с остальным сайтом, стилизация области навигации и публикации будет относительно простой, поскольку вы можете просто скопировать код из шаблона archive.php. Несколько изменений в этом коде могут дать странице автора совершенно иной вид, чем архивы категорий. Например, возможно, вы хотите удалить избранные изображения или мета-информацию.

В моем собственном блоге я решил просто перечислить заголовки постов и дату их публикации, а не полные выдержки. Это намного проще и облегчает поиск по постам авторов. Вот код, который я использовал для отображения списка сообщений, а не полных выдержек:

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
<ul><br />
<!— The Loop —><br />
<?php if ( have_posts() ) : while ( have_posts() ) : the_post();
<li><br />
<a href=»<?php the_permalink() ?>» rel=»bookmark» title=»Permanent Link: <?php the_title(); ?>»><br />
<?php the_title();
<?php the_time(‘d M Y’);
</li><br />
<br />
<?php endwhile;
<p><?php _e(‘No posts by this author.’);
<br />
    <?php endif;
<!— End Loop —><br />
</ul>

Это производит следующее:


Улучшая свой шаблон author.php и отображая больше информации об авторах, вы дадите им больше информации и сможете проще узнать о них читателей. Сам шаблон довольно легко изменить, как только вы к нему привыкнете.

Если ваша тема не имеет шаблона author.php, лучше всего скопировать другой шаблон, такой как page.php или archive.php, и удалить весь код из области содержимого, т.е. держать код сверху и снизу. это формирует ваш дизайн, но удаляет весь код, который не нужен для страницы автора. Сделав это, вы сможете легко создать свой собственный шаблон author.php, используя эту статью и шаблоны author.php из стандартных тем Twenty Ten и Twenty Eleven в качестве ссылок.

Удачи — Кевин