Создание отдельных страниц для профилей авторов и списков сообщений автором

Сайт, над которым я сейчас работаю, включает страницы профиля для каждого автора, а также метод поиска сообщений конкретным автором. Таким образом, у нас будет страница в /author/author-name/ которая отображает только список сообщений этого автора и страницы с /author/author-name/profile/ который показывает расширенную информацию о пользователе, но без сообщений.

По умолчанию WordPress содержит шаблон author.php который показывает некоторую базовую информацию о пользователе и последние сообщения автора. Это можно найти в /author/author-name/ . При поиске рекомендуемых способов создания профиля пользователя все, что я нашел, рекомендует изменить этот файл и использовать тот же URL-адрес, однако мы хотели бы использовать оба.

Единственный способ, которым я могу думать о достижении этого, – позволить странице взять параметр, чтобы /author/author-name/?profile=1 переписать его в .htaccess чтобы он отображался как /author/author-name/profile/ . Затем author.php чтобы проверить этот параметр и использовать отдельный шаблон. Я хотел бы избегать таких методов, как это, и как можно больше оставаться на рельсах WordPress.

Есть ли какие-либо плагины или другие методы, одобренные WordPress, которые я мог бы использовать для решения этой проблемы? (Кстати, у нас 3,8).

Я бы использовал add_rewrite_endpoint() с целевой программой EP_AUTHORS . Это должно заботиться о URL-адресах и запросе var, чтобы проверить [относительно :)] чисто.

Чтобы расширить ответ на вопрос Rarst, если вы не знакомы с add_rewrite_endpoint , вот что я придумал.

Создайте файл шаблона с именем author-profile.php . В файле functions.php добавьте следующее:

 add_action('init', 'theme_add_author_profile_endpoint'); add_action('template_redirect', 'theme_author_profile_template_redirect'); function theme_add_author_archive_endpoint() { add_rewrite_endpoint('profile', EP_AUTHORS); } function theme_author_archive_template_redirect() { global $wp_query; if (isset($wp_query->query_vars['profile']) && is_author()) { include dirname( __FILE__ ).'/author-profile.php'; exit; } } 

Это должно позволить /author/author-name/ быть направленным к шаблону author.php по умолчанию, в то время как /author/author-name/profile/ будет направлен в author-profile.php .