wpcompany.ru wordpress WPCompany

Изменение названия автора в WordPress без плагинов

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

Почему стоит менять имя автора без плагинов

Использование плагинов для изменения имени автора может привести к лишним нагрузкам и конфликтам с другими плагинами или темой. Кроме того, если задача — простая замена имени автора в выводе, то кодовые решения намного легче и быстрее.

Также это позволяет лучше контролировать процесс, а при обновлениях WordPress не возникает риска несовместимости.

Изменение имени автора через функции темы

Самый простой способ — использовать фильтр the_author, который отвечает за вывод имени автора в шаблонах. Добавьте следующий код в файл functions.php вашей дочерней темы или в специальный плагин функционала:

function wpcompany_change_author_name($display_name) {
    // Задаём условие для конкретного пользователя по ID или логину
    $user = wp_get_current_user();
    if ($user->ID === 2) { // замените 2 на ID нужного пользователя
        return 'Новый Автор'; // здесь новое имя
    }
    return $display_name;
}
add_filter('the_author', 'wpcompany_change_author_name');

Этот код изменит отображаемое имя автора только для пользователя с ID 2. Вы можете заменить ID и имя на свои.

Изменение имени автора по логину

Если удобнее ориентироваться на логин пользователя, используйте такой код:

function wpcompany_change_author_name_by_login($display_name) {
    global $post;
    $author = get_userdata($post->post_author);
    if ($author->user_login === 'ivanov') { // замените 'ivanov' на нужный логин
        return 'Иван Иванов';
    }
    return $display_name;
}
add_filter('the_author', 'wpcompany_change_author_name_by_login');

Изменение имени автора в REST API

Если у вас есть сайт с фронтендом на React, Vue или другом фреймворке, который использует REST API WordPress, то потребуется изменить вывод имени автора и там. Для этого добавим поле с изменённым именем в REST API ответ:

function wpcompany_add_custom_author_name_to_rest() {
    register_rest_field('post', 'custom_author_name', [
        'get_callback' => function($post) {
            $author = get_userdata($post['author']);
            if ($author->user_login === 'ivanov') {
                return 'Иван Иванов';
            }
            return $author->display_name;
        },
        'schema' => null,
    ]);
}
add_action('rest_api_init', 'wpcompany_add_custom_author_name_to_rest');

Теперь в JSON ответах REST API у постов появится поле custom_author_name с вашим изменённым именем автора.

Изменение имени автора в виджетах и других местах

Фильтр the_author работает в большинстве случаев, но если ваша тема или плагин используют другие функции вывода имени автора, например, get_the_author_meta('display_name'), то необходимо применять фильтр и на них:

function wpcompany_filter_author_display_name($display_name, $user_id, $field) {
    if ($user_id === 2) {
        return 'Новый Автор';
    }
    return $display_name;
}
add_filter('get_the_author_display_name', 'wpcompany_filter_author_display_name', 10, 3);

Этот код гарантирует, что везде, где вызывается имя автора, будет применяться ваша замена.

Пример комплексного решения

Объединим все подходы в одном коде для удобства:

function wpcompany_get_custom_author_name($user) {
    if (!$user) return '';
    if ($user->ID === 2 || $user->user_login === 'ivanov') {
        return 'Иван Иванов';
    }
    return $user->display_name;
}

function wpcompany_filter_the_author($display_name) {
    $user = wp_get_current_user();
    return wpcompany_get_custom_author_name($user);
}
add_filter('the_author', 'wpcompany_filter_the_author');

function wpcompany_filter_get_author_display_name($display_name, $user_id, $field) {
    $user = get_userdata($user_id);
    return wpcompany_get_custom_author_name($user);
}
add_filter('get_the_author_display_name', 'wpcompany_filter_get_author_display_name', 10, 3);

function wpcompany_add_custom_author_name_to_rest() {
    register_rest_field('post', 'custom_author_name', [
        'get_callback' => function($post) {
            $author = get_userdata($post['author']);
            return wpcompany_get_custom_author_name($author);
        },
        'schema' => null,
    ]);
}
add_action('rest_api_init', 'wpcompany_add_custom_author_name_to_rest');

Дополнительные рекомендации

Если вы хотите массово изменить имена авторов, лучше использовать SQL запросы для редактирования данных в базе или специальные плагины для управления пользователями. Но для выборочной замены на выводе — данный код оптимален.

Также стоит проверить, как ваша тема выводит имя автора. Иногда в шаблонах используются прямые вызовы the_author_meta('display_name') или другие функции. Если фильтры не работают, можно заменить вызовы напрямую в шаблонах или через хуки темы.

Заключение

Изменение имени автора в WordPress без плагинов — простая задача, если понимать, какие фильтры использовать. Через the_author и get_the_author_display_name можно гибко менять отображение имени, а дополнительно добавить поддержку REST API, чтобы фронтенд всегда получал актуальные данные.

Если вы ищете готовые решения и расширения для WordPress, рекомендую посмотреть плагины на WPSHOP — там много полезных инструментов для кастомизации вашего сайта.

×

AI-плагин от WPShop.ru

анализирует конкурентов

пишет статьи

готовит SEO

генерирует изображения

и еще кое-что...
WPGPT
Плагин, который наполняет ваш сайт WordPress
Узнать больше