Можно ли изменить в имени пользователя по умолчанию слаг на псевдоним?
По умолчанию URL-адрес выглядит так: http://domain.tld/author/ (admin),
Можно ли переписать и изменить на http://domain.tld/author/ (псевдоним), так что если пользователь изменит свой псевдоним со страницы профиля, то этот слаг будет также изменен на новое имя, данное пользователем?
Большое спасибо!
Самый простой способ — это использовать плагин Author Slug. Также вы можете использовать небольшой код:
Я вижу два способа решения этой проблемы: изменение данных, формирующих URL автора, или изменение URL автора. Вы, вероятно, должны обрабатывать и перенаправления, поэтому старые URL-адреса в пользовательских архивах продолжают работать, когда пользователь меняет свой ник.
Изменение URL автора
Этот вопрос состоит из двух частей: обрабатывать входящие ссылки с псевдонимом автора вместо слага автора и генерировать URL-адреса сообщений автора с псевдонимом вместо стандартного слага.
Первая часть решается путем подключения к фильтру
request code>, проверки, является ли это запросом автора, и поиска автора по псевдониму вместо slug. Если мы найдем автора, мы изменим параметры запроса, чтобы использовать идентификатор автора.
Вторая часть выполняется путем подключения к фильтру
author_link code> и замены стандартной части автора (обозначенной
$ author_nicename code>) псевдонимом.
Изменение данных, которые формируют URL автора
Возможно, более простым способом было бы обновить неиспользуемое поле
user_nicename code> в базе данных. Я думаю, что он генерируется из логина пользователя и никогда не меняется после этого. Но я не специалист по управлению пользователями, поэтому используйте его на свой страх и риск.
Также, если между именем есть пробел, URL не будет работать. Это происходит со случайными именами пользователей, созданными с помощью этого кода. Когда я попробовал код на моем конце, он генерирует случайные имена пользователей, такие как Новый пользователь 654937, а URL автора выглядит как site.com/author/Newuser654937/. Этот URL не будет работать, пока мы снова не изменим имя профиля и не удалим пробелы.
Я не думаю, что вы реально можете, нет query_var, который будет искать посты на основе псевдонима пользователя, поэтому нет подходящей переменной для сопоставления псевдонима в правиле перезаписи. Вы должны добавить свою собственную обработку запросов var для обработки запросов псевдонимов наряду с любым кодом перезаписи.