Итак столкнулся я с такой проблемой, изначально в Вордпрессе есть специальное поле “биография” а настройках пользователя в которое можно написать информацию об авторе. По дефолту это поле не имеет никакой возможности оформить или стилизовать текст. Меня это конечно не устраивает и я решил превратить стандартное поле информации об авторе в после с редактором 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 к дефолтному полю — напиши в комменты каким образом вы это сделали, я буду благодарен)
Для отправки комментария вам необходимо авторизоваться.