Заменить стандартное поле биография на редактор wordpress

Итак столкнулся я с такой проблемой, изначально в Вордпрессе есть специальное поле “биография” а настройках пользователя в которое можно написать информацию об авторе. По дефолту это поле не имеет никакой возможности оформить или стилизовать текст. Меня это конечно не устраивает и я решил превратить стандартное поле информации об авторе в после с редактором WP. Но столкнулся с кучей необъяснимых проблем которые попросту не давали мне заменить стандартное поле на редактор.

Данную проблему решил путем добавления дополнительного поля со встроеным редактором WordPress для автора с возможностью стилизовать текст и добавить ему форматирование. А затем вывести все это в файле author.php

Как добавить поле с редактором WordPress в раздел биография пользователя

Для того чтобы все получилось нам нужно добавить немного кода в файл function.php а именно:

// Добавляет редактор WordPress в настройки профиля пользователя с уникальными именами функций.

function custom_add_wp_editor_to_user_profile($user) {

    $biography = get_the_author_meta('custom_description', $user->ID);

    wp_editor($biography, 'custom_description', array('textarea_rows' => 10));

}

add_action('show_user_profile', 'custom_add_wp_editor_to_user_profile');

add_action('edit_user_profile', 'custom_add_wp_editor_to_user_profile');

/**

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

 */

function custom_save_wp_editor_profile_fields($user_id) {

    if (!current_user_can('edit_user', $user_id)) {

        return false;

    }

    if (isset($_POST['custom_description'])) {

        update_user_meta($user_id, 'custom_description', $_POST['custom_description']);

    }

}

add_action('personal_options_update', 'custom_save_wp_editor_profile_fields');

add_action('edit_user_profile_update', 'custom_save_wp_editor_profile_fields');

// КОНЕЦ

А затем добавить в файл author.php код, который будет выводить нашу информацию из нового редактора в админке.

Я использую такую конструкцию:

echo '<div>' . get_the_author_meta('custom_description', $author_id) . '</div>';

Ее конечно можно модифицировать под вашу тему как вам угодно. Также можно использовать стандартный формат вывода описания биографии автора из стандартного поля:

<?php the_author_meta('description'); ?>

Немного изменяем код для вывода описания автора из нашего нового редактируемого поля и получается вот так:

<?php the_author_meta('custom_description); ?>

Теперь у вас в админке в настройках профиля автора должно появиться вот такое поле в самом низу страницы

Теперь все должно работать. Но если вас раздражает старое поле биография, которое осталось и в принципе не несет никакой пользы — можно его отключить.

Удалить/отключить стандартное поле биография в настройках автора

Стандартное поле биография в настройках профиля автора WP

Для того чтобы отключить старое поле биография у авторов WordPress нужно добавить следующий код в файл function.php:

function hide_bio_field() {

    if (!is_admin()) {

        return;

    }

    echo '

        <script type="text/javascript">

            jQuery(document).ready(function($) {

                $("tr.user-description-wrap").hide();

            });

        </script>

    ';

}

add_action('admin_head-profile.php', 'hide_bio_field');

add_action('admin_head-user-edit.php', 'hide_bio_field');

С помощью JS скрипта мы скрывает поле старое биография в админке, также есть и другие способы его скрыть, вот еще вариант:

function hide_bio_field() {

    echo '<style>tr.user-description-wrap{display:none;}</style>';

}

add_action('admin_head-profile.php', 'hide_bio_field');

add_action('admin_head-user-edit.php', 'hide_bio_field');

Здесь чуть меньше кода, но мы скрываем его с помощью стилей css и задаем ему свойство display:none.

Финалочка

Мы добавили наше произвольное поле, затем выведи его в шаблоне на странице автора и удалили старое поле биография. Если у вас получилось добавить редактор wp к дефолтному полю — напиши в комменты каким образом вы это сделали, я буду благодарен)

Для отправки комментария вам необходимо авторизоваться.

Популярные статьи: