Сегодня посмотрим как обстоят дела в административных настройках профиля пользователя, а именно поподробнее изучим блок “Об авторе” все его диковинки: возможности использования – целесообразности и нецелесообразности… …и, основываясь на плюсах и минусах, добавим к настройкам профиля ещё один раздел настроек, второй блок об авторе и, замечу, – без использования плагинов.
Зачем это нужно?
Много спрашивают (а раз спрашивают… то есть те, которые привыкли к классическому редактору) – и в личке и в комментариях о том, как разрешить отработку html тегов для поля “об авторе”, которое по умолчанию?
Не знаю, насколько эти разрешения выгодны, при том, что этот запрет html
тегов и пр. в целях безопасности – а этот факт толкует многое!
Но… поближе к делу… (в финале статьи дан видео)
Главное, что требовалось администраторам, это то, чтоб как-то информация об авторах была разграничена: блок по умолчанию выводил одну инфу, а к примеру, дополнительный блок об авторе – иную (дополнительную, более объемную…).
И самое главное, чтоб настройки было возможно граничить по ролям пользователей…
выводим в админке дополнительный блок об авторе…
Рассказываю на примере сайта, который администрирую. Вариант по тексту ниже, всего лишь вариант, и его возможно переделывать по своим требованиям.
В настройках профиля уже существует блок “об авторе”, однако, он не всегда и всем подходит. К тому же при редактировании, в поле ввода текста, невозможно использовать html – фото, требуемый вариант ссылок и пр. т.е. достаточно сухой текстовый вариант описания.
Новый же блок, который сегодня организуем, позволит (независимо) от блока об авторе по умолчанию, вывести любую дополнительную информацию об авторе сайта – на страницах архивов авторов, либо же в отдельных записях/страницах, либо какой-то созданной авторской..! с картинками, ссылками и прочим таким полезным…
Настраивается дополнительный блок “об авторе”, в плане стилистики отображения информации на странице(ах) сайта, как вам потребуется…
И – так, сравним:
Так выглядит блок об авторе (по умолчанию) который присутствует на любом сайте платформы WordPress:
…добавим ещё один вариант (блока) настроек и вывода информации об авторах…
Фото ниже: как видите, для редактирования – в блоке присутствуют визуальный и html редакторы.
Повторюсь: выводить информацию из этого блока возможно абсолютно на любой авторской ( is_author()
) странице сайта (во фронтенде) по нашим утончённым и креативным желаниям.
выглядеть на сайте блок будет примерно так (как понимаете, это стилистический вариант: у вас будет иначе… в соответствии с вашими желаниями..):
Это интересно:
Как добавить аватарку к имени автора
Одна из таких примочек — аватарка, рядышком с именем автора поста. Или в начале статьи или, как теперь делают многие, в финале поста и к тому же с какими-то пояснениями об авторе. – в начале или финале статьи
Как добавить текстовый редактор в блок “Отрывок” – на странице редактирования записи WP
Как стилизовать форму комментирования WordPress
14 полезных сниппетов — код для наилучшей работы сайта WordPress
Что такое Open Graph? как подключить протокол Open Graph к WordPress
Добавим в текстовый редактор пояснительные сообщения для авторов — управление из админки
код для вывода дополнительного блока об авторах – с текстовым редактором
Добавляем код показанный ниже в файл функций активного шаблона вашего сайта.
…вследствие чего сразу же в настройках профиля пользователя (в админпанели) появится блок редактирования (как на фото выше).
код можно добавить в специально организованный файл шаблона. Как это делается и подключается, описано чуть ниже (подробнее в этой
файл функций — занимательный помощник в расширении функционала сайта ! особливо, если используется по назначению, — однако, многие владельцы блогов/сайтов замечательным образом превращают functions.php в сборную солянку. статье).
/* добавление дополнительные поля в профиле */
add_action( 'show_user_profile', 'add_extra_ats_edit' );
add_action( 'edit_user_profile', 'add_extra_ats_edit' );
function add_extra_ats_edit( $user ){ if (is_super_admin( $user_ID )) {
?>
<h3>Дополнительные данные пользователя:</h3>
<tr class="user-description-wrap">
<th><label for="atsdescription"><b>Об авторе:</b></label></th><br /><br />
<td>
<?php
$atsprof = get_the_author_meta( 'ats_prof', $user->ID );
// $atsprof = sanitize_text_field(get_the_author_meta( 'ats_prof', $user->ID )); // для примера
// esc_attr срезает символы, как и esc_html()
// esc_html() менее грубая - переводит HTML символы, сущности в визуальный текст - не обрабатывает HTML
// sanitize_text_field() - удаляет все HTML символы, переносы строк, табуляции и т.п. HTML сущности
wp_editor($atsprof, 'atsdescription', array(// content editor_id
'wpautop' => false,// установим false или 0 (хотя по умолчанию: 0)
'media_buttons' => 1,
'textarea_name' => 'ats_prof', // ats_prof нужно указывать!
'textarea_rows' => 20,
'tabindex' => null,
'editor_css' => '',
'editor_class' => '',
'teeny' => 1,// урезанный/полный текстовый редактор: 1 - скроет кнопку дополнительной второй панели, однако, в редакторе будут работать специальные фильтры, события
'dfw' => 0,
'tinymce' => 1,
'quicktags' => 1,
'drag_drop_upload' => true //false
) );
?></td></tr><?php
} }
// сохранение данных
add_action( 'personal_options_update', 'sa_extra_ats_edit' );
add_action( 'edit_user_profile_update', 'sa_extra_ats_edit' );
function sa_extra_ats_edit( $user_id )
{
update_user_meta ( $user_id,'ats_prof', $_POST['ats_prof'] );
}
/* вывод инфы: абсолютно на всех страницах echo get_the_author_meta('ats_prof', 1); */
Обращаю внимание: если используем в array 'wpautop' => false,
– будет возможна разбивка на абзацы…
.т.е абзацы, как и весь текст, будут обёрнуты тегом <p></p>
Если установим “1” (true
) теги р
будут вырезаны (браузер их не считает и не выведет на экран): в итоге – абзацев не будет (хотя, в редакторе (бэкенд) текст будет визуально отформатирован!) – подробнее ниже и в видео.
Дополнительные пояснения к коду:
Условие:
if (is_super_admin( $user_ID ))
сделает так, что добавлять информацию об авторе (в новом блоке) будет возможно только администратору. Для всех остальных пользователей – блок в настройках профиля выведен не будет!
Если разрешаем всем пользователям редактировать свой блок об авторе – убираем условие, либо обусловим как-то иначе…
Для примера приглядимся к коду ниже (это интересно, всё связанное – более подробно рассмотрим в видео и следующих статьях):
/* проверяем роли и возможности */
add_action( 'init','mytags_check_editor_capabilities' );
function mytags_check_editor_capabilities() {
if (is_super_admin( $user_ID )) { // для примера: только для админа ! можно не использовать
if( current_user_can( 'edit_others_posts' )) { // обусловим права для пользователей
// user_can() = проверим права текущего пользователя
// далее работаем
} } }
/* проверяем роли и возможности */
…экшн (фильтры):
add_action( 'init','mytags_check_editor_capabilities' );
Обработка, используем хук init
:
( init
) – код выполняется раньше, чем ядро WordPress подгрузит требуемые для обработки пользовательских ролевых разрешений файлы и функции.
Этот кусок кода я дал отдельно, однако, функции при надобности можно скомпоновать: исключить или дополнить… Так как требования у нас у всех разные..
Если в нашем новом блоке “об авторе” имеется текстовый редактор (т.е. доступно вольное форматирование текста), в этом случае, как понимаете и как говорилось выше, возможно создание вывода информации совершенно в любой стилистке: …для организации потребуются может быть только начальные знания CSS.
выводим блок об авторе
Вывести блок “Об авторе” на странице возможно таким запросом вызова функции – добавьте строку данную ниже в требуемый файл. Например, в author.php:
<div class="pages-authors"><?php the_author_meta('ats_prof', $author->ID); ?><hr class="nr2"></div>
Либо такую, ниже: …только для админа (используем условие if (is_super_admin( $user_ID ))
описанное выше) – используется при настройках вывода блока об авторе:
<?php // фронтенд: только для админа
if (is_super_admin( $user_ID )) {
the_author_meta('ats_prof', $author->ID); // вывод соответствующей информации об авторе на странице конкретного автора по ID
?><hr class="nr2"><?php } ?>
Для примера:
echo get_the_author_meta('ats_prof', 1); // вывод абсолютно на всех страницах авторов
используется для важных сообщений авторам сайта (каким-то условностями)) – оберните вызов функции… в какое-то условие.
Примеры условий отображаемых страниц (условные теги):
// примеры использования условных тегов:
// если отображается страница любого из авторов
is_author();
// если отображается страница автора с ID 7
is_author('7');
// если отображается страница автора под ником "Vоvan"
is_author('Vоvan');
// ник возможен через тире
is_author('Vоvan-Vоvan');
// возможно указать нескольких авторов: с ID и ником ...
// добавлено стартом от версии 2.5
is_author(array(7,'Vоvan-Vоvan','Vоvan'));
$sityauthor = данные автора;
if ( is_author($sityauthor) )
{ echo 'информация'; }
Стили CSS
…возможно организовать в таких примерно селекторах (добавляйте свои селекторы, стили):
.page-authors{font-size:12px;color:#ccc}
.page-authors img{margin:3px 7px}
hr.nr2{clear:both;border:0 solid #fff}
<hr class="nr2">
– разделитель, возможно, кому-то пригодится…
Также возможно организовать шорткод, который предоставит возможность вывода блока об авторе, например, в сайдбаре.
Вот плагин widget text class ats (текстовый виджет), который умеет работать с функциями php
, html
и шорткодами (доступен в репозитории WP).
А это для тех, которые решили организовать отдельный функциональный файл в своём шаблоне:
как подключить в файле functions.php дополнительный файл(ы)
// подключение файла к functions.php (например, так) = ИМЕНА файлов и папки ats-functions произвольные:
include_once "ats-functions/ats-name.php"; // подключение файла в functions.php
// или такое подключение (например, так):
require_once get_template_directory() . '/ats-functions/ats-name.php'; // подключение файла в functions.php
// в плагине (например, так):
require( plugin_dir_path( __FILE__ ) . 'inc/ats-name.php' ); // подключение файла для плагина
Управление блоком “об авторе” (показ/скрытие для определённых ролей пользователей) возможно вывести в анминку WоrdPress. Но это совсем другая история… о ней в следующих инструкциях…
Пишите, если возникли вопросы – я всегда на связи.
mihalica.ru !