Позволяет изменить URL на архивную страницу автора.

Click here to view original web page at wp-kama.ru

Использование

add_filter( 'author_link', 'filter_function_name_2728', 10, 3 );
function filter_function_name_2728( $link, $author_id, $author_nicename ){
	// Фильтруем...

	return $link;
}
$link(строка)
URL на архивную страницу автора.
$author_id(число)
ID автора, URL на архивную страницу которого нужно изменить.
$author_nicename(строка)
Универсальное имя автора, URL на страницу которого пропускается через фильтр.

Примеры

#1 Изменим ссылку на архивную страницу автора

По умолчанию WordPress генерирует следующую ссылку на архивную страницу автора:

Пусть вы решили отображать записи автора по адресу:

Получить такую ссылку поможет код:

add_filter( 'author_link', 'filter_author_link', 10, 3 );

function filter_author_link( $link, $author_id, $author_nicename ) {
	return home_url( '/writer/' ) . $author_nicename;
}

Но если сейчас перейти на эту страницу, мы получим 404 ошибку, так как движок ничего не знает о подобной структуре ссылки. Сообщим ему об этом:

add_action( 'init', 'new_author_base' );
function new_author_base() {
	global $wp_rewrite;
	$wp_rewrite->author_base = 'writer';
}

После вставки кода нужно сбросить реврайты, для этого достаточно зайти на страницу ЧПУ в админке.

Где используется хук

Код хука-фильтра author_link

...
				$author_nicename = $user->user_nicename;
		}
		$link = str_replace('%author%', $author_nicename, $link);
		$link = home_url( user_trailingslashit( $link ) );
	}

	/**
	 * Filters the URL to the author's page.
	 *
	 * @since 2.1.0
	 *
	 * @param string $link            The URL to the author's page.
	 * @param int    $author_id       The author's id.
	 * @param string $author_nicename The author's nice name.
	 */
	$link = apply_filters( 'author_link', $link, $author_id, $author_nicename );

	return $link;
}

/**
 * List all the authors of the site, with several options available.
 *
 * @link https://codex.wordpress.org/Template_Tags/wp_list_authors
 *
 * @since 1.2.0
 *
 * @global wpdb $wpdb WordPress database abstraction object.
 *
 * @param string|array $args {
 *     Optional. Array or string of default arguments.
...