Как в архиве постов определенного автора вывести его дополнительные данные

Как в архиве постов определенного автора вывести его дополнительные данные | n-wp.ru

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

Как в архиве постов определенного автора вывести его дополнительные данные

Вывод ника автора

Обычно в архиве постов определенного автора ограничиваются заголовком “Архив автора”. Конечно можно смекнуть, в архив к какому автору вы попали, но все же вывести его никнейм будет не лишним. Для этого вставьте в functions.php код:

function p2_archive_author() {
	echo p2_get_archive_author();
}

function p2_get_archive_author() {

	if ( get_query_var( 'author_name' ) )
	 		$curauth = get_userdatabylogin( get_query_var( 'author_name' ) );
	else
	 		$curauth = get_userdata( get_query_var( 'author' ) );

	if ( isset( $curauth->display_name ) )
		return apply_filters( 'p2_get_archive_author', $curauth->display_name );
}

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


[info txt=”Здесь и далее под шаблоном я подразумеваю файл, отвечающий за вывод постов автора. Это можно сделать и с помощью index.php, и с помощью archive.php, и author.php, и другими способами. Поднобнее о шаблонах WordPress.”]

Вывод имени и фамилии автора

Если автор в своем профиле указал имя и фамилию, то ее можно вывести в архиве постов этого автора. Для получения данных об авторе постов из его профиля в блоге нужно в начале шаблона, еще до вывода дополнительных данных, вставить код:


Этот запрос определяет автора постов архива, и позволяет оперировать доступными данными, которые тот указал в своем профиле. Чтобы вывести имя и фамилию автора, вставьте в шаблон:

first_name): ?>                                           //проверяем, заполнено ли поле Имя
    first_name; ?>                                 //если заполнено, то выводим имя автора и ставим после него пробел

last_name): ?>                                            //проверяем, заполнено ли поле Фамилия
    last_name; ?> //если заполнено, то выводим фамилию автора

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

Вывод аватара автора

Для вывода аватара вставьте в шаблон код:

user_email, '40', ''); ?>

Этот код определяет e-mail автора, указанный им при регистрации, и по нему из сервиса gravatar.com выводит аватар размером 40 на 40. Так как у автора обязательно есть e-mail, то вставлять проверку его существования не нужно. Вы можете по желанию изменить размер аватара.

Вывод количества постов автора

Чтобы получить количество постов, опубликованное данным автором, используйте в шаблоне следующий код:

Количество записей: 

Вывод текста, который автор написал о себе в профиле

При заполнении профиля авторы нередко пишут о себе небольшой текст. Чтобы его вывести в архиве автора, используйте в шаблоне код:

user_description; ?>

Если текст введен, то он отобразится, если нет, то вместо него будет пустое место. Если вы хотите его избежать, то можете использовать этот код с дополнительной проверкой:

user_description): ?>       //если заполнено поле Биография
    user_description; ?>  //то выводится текст об авторе из его профиля

По-умолчанию ссылки и HTML-разметка в поле Биография обрезаются. Чтобы добавить возможность вставлять ссылки и красиво оформлять этот текст, можно воспользоваться ответом, который я дал на один из вопросов. Чтобы добавить к полю Биография привычные кнопки визуального редактора, воспользуйтесь способом Как добавить кнопки редактора к полю Биография в профиле пользователя.

Вывод социальных контактов автора

Стандартно WordPress позволяет указать несколько социальных контактов, большинство из которых – мессенджеры, которыми сейчас практически никто не пользуется. Если нужно добавить в профиль такие социальные сети, как Twitter, Facebook, Google+, то воспользуйтесь рецептом Как добавить дополнительные контактные данные в профиль пользователя. Давайте добавим поля Twitter, Facebook, Google+, и уберем редко используемые в рунете поля. Для этого нужно добавить в functions.php этот код:

function add_twitter_contactmethod( $contactmethods ) {
  // Добавляем Twitter - нужно вводить в поле только никнейм
  $contactmethods['twitter'] = 'Twitter (ваш ник в Twitter)';
  // Добавляем Facebook - нужно вводить в поле только никнейм
  $contactmethods['facebook'] = 'Facebook (ваш ник в Facebook)';
  // Добавляем Google+ - нужно вводить в поле только ID в сети Google+
  $contactmethods['google_plus'] = 'Google+ (ваш ID в Google+)';  	
  // Убираем Yahoo IM
  unset($contactmethods['yim']);
  // Убираем AIM
  unset($contactmethods['aim']);
  // Убираем Jabber
  unset($contactmethods['jabber']); 	
  return $contactmethods;
}
add_filter('user_contactmethods','add_twitter_contactmethod',10,1);

Теперь давайте выведем эти данные об авторе. Для этого в шаблон вставьте код:

google_plus): ?>
    <a title="Google+ автора" href="https://plus.google.com/google_plus; ?>">Google+ //выводим ссылку на профиль автора в Google+

twitter): ?>
    <a title="Twitter автора" href="http://twitter.com/twitter; ?>">Twitter          //выводим ссылку на профиль автора в Twitter

facebook): ?>
    <a title="Facebook автора" href="http://www.facebook.com/facebook; ?>">Facebook  //выводим ссылку на профиль автора в Facebook

user_url): ?>
    <a title="Сайт автора" href="user_url; ?>">Сайт                                  //выводим ссылку на сайт автора 

Вывод RSS постов автора

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

Для этого добавьте в functions.php код:

function p2_author_feed_link() {
	echo p2_get_author_feed_link();
}
	function p2_get_author_feed_link() {

		if ( get_query_var( 'author_name' ) )
	   		$curauth = get_userdatabylogin( get_query_var( 'author_name' ) );
		else
	   		$curauth = get_userdata( get_query_var( 'author' ) );

		if ( isset( $curauth->ID ) )
			return apply_filters( 'p2_get_author_feed_link', get_author_feed_link( $curauth->ID ) );
	}		

Чтобы вывести ссылку на RSS постов автора, вставьте в шаблон код:

<a title="Подписаться на RSS записей автора" href="">RSS

Вывод нумерации страниц в архиве

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

Чтобы узнать текущий номер страницы архива, вставьте в functions.php код:

function p2_page_number() {
	echo p2_get_page_number();
}
	function p2_get_page_number() {
		global $paged;
		return apply_filters( 'p2_get_page_number', $paged );
	}

Чтобы вывести номер страницы, вставьте в шаблон код:

Страница 
 1 ) : ?>
    

    1

Вывод ссылки отправки письма автору

Для большинства из нас главным средством коммуникации является старая, добрая, практически ламповая электронная почта. Можно добавить ссылку для быстрой связи с автором постов по электронной почте – кликнув по ней, посетитель откроет окно почтовой программы с введенным уже электронным адресом автора и темой письма.

Для этого вставьте в шаблон код:

<a rel="nofollow" title="Написать автору письмо" href="mailto:user_email; ?>?subject=С сайта to_site.ru (http://to_site.ru/author/nickname; ?>/page/ 1 ) : ?>1)&Body=http://to_site.ru/author/nickname; ?>/page/ 1 ) : ?>1">Написать автору по электронной почте

В коде нужно заменить to_site.ru на свой домен. Понятно, что структура /to_site.ru/author/nickname является дефолтной, стандартной для WordPress. Если вы изменяли каким-либо образом структуру внутренних ссылок, ведущих к архивам, отходя от стандартной, то вам нужно будет сменить ее и в приведенном коде. При клике по такой ссылке открывается электронное письмо с уже введенным электронным адресом, в теме письма указано, с какого оно сайта отправляется, и даже фигурирует нумерация страниц, остается только добавить свой текст и отправить.

После таких добавок архив автора становится поход на настоящий профиль, в котором есть все данные об этом авторе.

Автор tiaurus 2182 Articles
Являюсь создателем n-wp.ru — блога о WordPress для новичков. Мне интересно многое, поэтому еще я сделал 123-box.ru — блог о программах для Windows, и tiaurus.info — блог о красоте.

Оставьте первый комментарий

Оставить комментарий

Ваш электронный адрес не будет опубликован.


*