На днях на одном из моих подопечных сайтов, который администрирую, реализовал одну в общем-то полезную штуку, о которой меня просили админы…
Дело в следующем: прежде всего доложу, что описанная в статье, так сказать — фичя, возможно, потребуется тем владельцам сайтов, у которых на сайте трудятся авторы. Это замечательно! Однако, не все эти авторы так запросто владеют текстовым редактором — попросту совершают массу ошибок, на исправления которых уходит масса времени. Так вот, чтобы сэкономить уйму полезного времени, как раз и нацелена задача сей статьи.
В итоге у нас в админке — в текстовом редакторе, при редактировании статьи появится некая пояснительная записка главного администратора. Что возможно поместить в это сообщение, ограничено только нашей фантазией — даже видео!! Управление — набор сообщения из админки!..
Что жж, добавим в текстовый редактор раздел для пояснительных сообщений администрации:
обогатим текстовый редактор пояснительным разделом для авторов
На скриншоте ниже видно, где примерно будет располагаться сообщение: кстати сказать, подобные, скажем так, памятки для авторов, возможно поместить где угодно, в смысле перед каждым разделом управления текстовым редактором: было бы желание!
Перво-наперво советую создать где-нить в корне шаблона папку my-functionss и в ней файл, ну, скажем, с именем: edit-post-func.php…
Как организовать файл функций, или перенести некоторые важные наработки для сайта в плагин (что весьма целесообразнее!!), читайте в этом полезном ПОСТЕ
Не забудьте добавить в functions.php для определения папки и созданного файла такую строку:
include_once "my-functionss/edit-post-func.php"; // подсказки в текстовом редакторе
В созданный файл поместим такой код, который призван внедрить в текстовый редактор наше сообщение: то есть используем хук edit_form_after_title — если повнимательнее присмотреться к хуку, то по строке достаточно просто понять, где выведется сообщение — … after_title после тайтла, т.е. после заглавия…
Хуков для подобных задач очень много, о них ниже по тексту…
к оглавлению
код для вывода в текстовом редакторе сообщения авторам, редакторам…
<?php
// сообщение будет помещено под заглавием статьи
add_action( 'edit_form_after_title', 'callback_ats_edit_form_after_title' );
function callback_ats_edit_form_after_title( $post ) {
if (current_user_can('author') or (current_user_can('editor') or (current_user_can('administrator')))) {
// чтобы видел свои сообщения АДМИН - or (current_user_can('administrator')) = или редактор: editor - автор: author
$als_options = get_option('ats_edit_options');
echo "<div style='margin-top: 10px;padding: 15px;color: #fff;background: #3ab902;clear: both;'>";
echo $als_options['atsy_text_edit'];
echo "</div>" ;
}
}
В коде даны кое какие пояснения (если решите модернизировать). Возможно, например, вывести какое-то постоянное сообщение напрямую в коде минуя настройки в админке… через оператор echo
.
echo "<div style='margin-top: 7px;padding: 12px;color: #fff;background: #9876aa;clear: both;'>Это моё сообщение <b>edit_form_after_title</b></div>"; // пояснения
Callback — англ. call — вызов, англ. back — обратный — попросту — функция обратного вызова (программирование) Передача исполняемого кода в качестве одного из параметров другого кода: то бишь новый кастомный параметр возможно прицепить к ХУКУ (получится так называемый ХАК))
…но это так, к слову — функцию можете называть по своему желанию…
Как вариант, можно сделать вывод сообщения только для админа и авторов — для админа, это для того чтоб контролировать отображение сообщений…
Также возможно помимо прочего сообщения авторам, добавить сообщение только для редакторов… но для этих задач следует немножечко подредактировать данный в статье код.
…например, как-нить так добавить условия:
if (current_user_can('author') or (current_user_can('editor') or (current_user_can('administrator')))) { // administrator для показа и админу, для редактора editor, для авторов author
к оглавлению
код для создания страничек настроек в админке — для организации сообщений авторам
Теперь добавим ещё один достаточно длинный, но очень простенький код в созданный файл. Это чудо добавит настройки в админпанель.
То есть прямо из админки появится возможность набирать сообщение авторам.
Кстати сказать: вывод сообщений возможно настроить по ролям пользователей (в коде даны пояснения) — можно, например, сделать вывод только для авторов (и админа) — редакторы, думается, более продвинутые (об этом говорил чуть выше)…
<?php // стартовый php стереть
/**
* Function that adds settings page in the menu
*/
$atss_edit_page = 'edit-ats.php';
// it's part of the URL of the page
add_action('admin_menu', 'ats_edit_options');
function ats_edit_options() {
global $atss_edit_page;
add_options_page( 'Подсказки автору', 'Подсказки автору', 'manage_options', $atss_edit_page, 'edit_option_page'); // в "Пользователях" add_users_page настройки: add_options_page
}
/**
* This return function (Callback)
*/
function edit_option_page(){
global $atss_edit_page;
?><div class="wrap">
<h2>Параметры подсказок авторам по ролям:</h2>
<form method="post" enctype="multipart/form-data" action="options.php">
<?php
settings_fields('ats_edit_options');
do_settings_sections($atss_edit_page);
?>
<p class="submit">
<input type="submit" class="button-primary" value="<?php _e('Save Changes') ?>" />
</p>
</form>
</div>
<?php
}
/************************************************* */
// Create textarea
add_action( 'admin_init', 'ats_edit_settings_textr' );
function ats_edit_settings_textr() {
global $atss_edit_page;
register_setting( 'ats_edit_options', 'ats_edit_options', 'atses_validate_settings' ); // added:
// Added section and
add_settings_section( 'atss_section_edit', '<br />Здравствуйте Админ, редактор..! ...поместите в поле ниже своё сообщение авторам сайта:', '', $atss_edit_page );
$atss_edit_field_params = array(
'type' => 'textarea',
'id' => 'atsy_text_edit',
'desc' => '<br />...если ничего нихотите подсказать автору <span style="font-weight: 700;color: #038900;font-style: italic;">оставьте поле пустым</span>'
);
add_settings_field( 'atsy_texter_field_none', '<br /><br /><br /><br /><br />Введите текст, HTML подсказок:', 'atss_option_display_settings_edit', $atss_edit_page, 'atss_section_edit', $atss_edit_field_params );
}
// textarea function
function atss_option_display_settings_edit($args) {
extract( $args );
$option_name = 'ats_edit_options'; // added:
$o = get_option( $option_name );
switch ( $type ) {
case 'textarea':
$o[$id] = esc_attr( stripslashes($o[$id]) );
$current_user = wp_get_current_user();
echo '' . $current_user->display_name . ' — ';
echo 'Ваше сообщение авторам сайтов, например: <br /><span style="font-weight: 700;color: #038900;font-style: italic;"><b>КАКОВ макимальный размер загружаемых картинок, или какое число фотографий возможно использовать в статье и т.п.<br />также возможно добавлять html ссылки на более подробные статьи, либо какие-то административные новости, видеоролики и пр. и пр.</b></span>';
$als_options = get_option('ats_edit_options'); // added: double styles
echo "<br />";
echo "<?php _e('Save Changes') ?>";
echo "<br /><br />";
echo "<textarea placeholder=' Ваше сообщение...' class='code large-text' cols='50' rows='2' type='text' id='$id' name='" . $option_name . "[$id]' >$o[$id]</textarea>";
echo ($desc != '') ? "<br /><br /><span class='description'>$desc</span>" : "";
} }
// fin news textarea function
Ну вот в принципе и всё! как только добавите сии коды, всё тут же организуется и для админа (на страничке управления)…
Сами настройки страницы в административной панели «Настройки» / «Подсказки автору» выглядят так:
…и для сообщений в текстовом редакторе… — вам останется только протестировать и подстроить опции под себя.
к оглавлению
сообщения авторам в текстовом редакторе — заключение
Полезные данные кода:
В Базе Данных информация хранится в ats_edit_options
в таблице wp_options
В сериализованном массиве: $als_options = get_option('ats_edit_options');
Значение поля textarea — для ввода информации — atsy_text_edit
Дополнительные хуки:
edit_form_top — отработает перед полем ввода заголовка записи
edit_form_before_permalink — отработает после ввода заголовка записи — перед ссылкой записи
edit_form_after_title — отработает после ввода заголовка записи и её постоянной ссылки
edit_form_after_editor — отработает после основного поля вывода визуального редактора
submitpage_box (для страниц) и submitpost_box (для произвольных типов записей) — отработает в сайдбаре (виз. редактора)перед выводом метабоксов…
edit_page_form (для страниц) и edit_form_advanced (для других типов записей) — отработает после всех имеющихся метабоксов…
dbx_post_sidebar — отработает после всего контента — финальный хук для страницы…
Эти функциями определим место вывода страницы настроек в административной панели ДЛЯ главного админа сайта:
Стартовые функции add_submenu_page() являются add_dashboard_page() — под пунктом меню «Консоль»…
…и далее…
add_posts_page() — раздел «Записи»)-
add_media_page() — раздел «Медиафайлы»
add_links_page() — раздел «Ссылки»
add_pages_page() — раздел «Страницы»
add_comments_page() — раздел «Комментарии»
add_theme_page() — раздел «Внешний вид»
add_plugins_page() — раздел «Плагины»
add_users_page() — раздел «Пользователи»
add_management_page() — раздел «Инструменты» — и конечно же add_options_page() — раздел «Настройки», которую я использовал в примере.
Online консультация по настройкам и созданию сайтов на WordPress
...А мне остаётся только раскланяться... и пожелать полезной работы в сети
...город веб мастеров Михалика.ru © - запросто с WordPress - ATs media squad
Спасибо, Михаил! попробую реализовать.
А если не получится сделать (а это вероятнее всего)), то обращусь к вам — это возможно по такой мелочи?