Добавление шапки и подвала в панель администратора WordPress
Я хочу добавить шапку в административную панель, чтобы она выглядела более согласованно с фронтендом. Ничего особенного, достаточно просто шапки и подвала. Секция контента должна остаться в оригинальном стиле.
Но я не могу найти подходящий хук для этой области. Я пробовал добавить get_header(); в admin-header.php и это работает. Однако, я не хочу вмешиваться в core-файлы WordPress, поэтому есть ли другой способ добавить эти файлы?
ОБНОВЛЕНИЕ
После нескольких месяцев исследований я окончательно отказался от идеи добавления шапки и подвала фронтенда в админ-панель. Вместо этого я использую страницы фронтенда в качестве пользовательской панели управления. Хотя это потребовало много работы (я делал это вручную, без плагинов), но такой подход оказался более гибким.
Тем не менее, спасибо за советы и предложения.
Действие in_admin_header
может быть использовано для вставки контента перед <div id="wpbody">
в админ-панели WordPress.
Смотрите строку 101 файла /wp-admin/admin-header.php (номер строки соответствует версии 3.3.2)
Дополнительная информация о действиях: Справочник по действиям, codex

да... это тоже работает, но меню по-прежнему отображается слева, а не обернуто под основным содержимым... я нашел, что admin_head может это сделать, но он добавляет заголовок в секцию <head></head>, что тоже не идеальное решение... тем не менее, все равно спасибо за подсказку...

Я знаю, что это может показаться безумным, но использование iframe для шапки и подвала и добавление в functions.php или создание плагина:
function frontheader() {
echo 'IFRAME';
}
add_action('admin_head', 'frontheader');
function frontfooter() {
echo 'IFRAME';
}
add_action('admin_footer', 'frontfooter');

Я не думаю, что это сработает так, как вы ожидаете. admin_head
срабатывает внутри секции <head>
. admin_footer
может сработать.

Одной из помех для концепции верхнего и нижнего колонтитулов является левое административное меню.
Но с помощью Ozh' Admin Drop Down Menu, и его дополнения Admin Menus Fixed, можно переместить меню в другое положение и вставить свои собственные HTML-элементы сверху и снизу.
нажмите для увеличения ⤴
add_action( 'in_admin_header', 'insert_header_wpse_51023' );
add_action( 'admin_footer', 'insert_footer_wpse_51023' );
add_filter( 'admin_print_styles', 'footer_hide_wpse_51023' );
function insert_header_wpse_51023()
{
echo '<div style="width:100%"><img src="http://example.com/header.jpg" width="100%" /></div>';
}
function insert_footer_wpse_51023()
{
echo '<div style="width:100%"><img src="http://example.com/footer.png" width="100%" /></div>';
}
function footer_hide_wpse_51023()
{
echo '<style type="text/css">#wpfooter { display: none; }</style>';
}

Судя по вашему описанию, часть, которую вы хотите обернуть, вероятно, это div
с классом wpwrap
. Однако подходящих хуков за его пределами нет, а также вам нужно будет что-то делать с панелью инструментов и так далее.
Административная часть WordPress (пока что) считается очень негибкой и сложной для глубокой настройки по сравнению с фронтендом. Возможно, имеет больше смысла работать с CSS-стилями и существующими элементами, а не пытаться вводить крупные новые элементы.

Вы пытаетесь сделать бэкенд похожим на фронтенд, чтобы пользователи могли получить доступ к своему профилю?
Или есть другая причина, по которой вы хотите видеть шапку и подвал в бэкенде?
Если вы хотите предоставить пользователям доступ к их профилю, вы можете использовать http://wordpress.org/extend/plugins/user-meta/ для создания фронтенд-профиля / панели управления, которая будет включать шапку и подвал.
Также есть несколько функций и плагинов, которые могут отключить ненужные поля профиля.

Нельзя размещать элемент div
внутри элемента head
. Это некорректный HTML.

Я знаю, что это старая тема, но она может помочь кому-то еще, кому это нужно. В файл functions.php добавьте следующий код:
add_action( 'in_admin_header', 'my_header' );
function my_header()
{
if ( current_user_can( 'subscriber' ) ) { // Если пользователь является подписчиком, уберите условие IF для всех пользователей.
include('../wp-content/themes/YOUR_TEMPLATE_NAME/header.php'); // Подключение header.php
echo '<style>body {background: #fff;}</style>'; // Добавление стилей, также можно подключить .css файл.
}
}

Если кому-то всё ещё нужно добавить фронтенд-шапку и подвал в админку, возможно, это поможет:
add_action( 'in_admin_header',function(){
remove_all_actions( 'admin_notices' );
?>
<style id="admin-in-header-css">
html{
margin:0 !important
}
#wpadminbar,
#adminmenumain,
#wpfooter,
#footer-upgrade+div,
#footer-left,
#footer-upgrade{
display: none !important;
}
#wpcontent, #wpfooter {
margin-left: 0;
margin-right: 0;
padding-left: 0;
padding-right: 0;
}
</style>
<?php
ob_start();
get_header();
if( class_exists( 'WPBMap' ) ){
WPBMap::addAllMappedShortcodes(); // На случай, если у вас используется WPBakery page builder
}
$frontend_header = ob_get_clean();
echo do_shortcode( str_replace( '<html','<div',str_replace( '<body','<div',$frontend_header ) ) );
?>
<style id="admin-after-head-css">
html{
margin:0 !important
}
</style>
<?php
} );
add_action( 'in_admin_footer',function(){
add_filter( 'admin_footer_text','__return_empty_string' );
add_filter( 'update_footer','__return_empty_string' );
ob_start();
get_footer();
if( class_exists( 'WPBMap' ) ){
WPBMap::addAllMappedShortcodes(); // На случай, если у вас используется WPBakery page builder
}
$frontend_footer = ob_get_clean();
echo do_shortcode( str_replace( '</html>','',str_replace( '</body>','</div>',$frontend_footer ) ) );
} );
Это невозможно сделать чистым способом, потому что мы пытаемся сделать нечто немного "грязное", но я считаю, что это хороший компромисс между грязностью и целью, которую мы хотим достичь.
Всё, что можно удалить через PHP — мы удаляем через PHP, остальное будет скрыто с помощью "грязного" CSS. Я дважды задал нулевой верхний отступ для HTML-элемента, потому что первый раз он должен быть обработан непосредственно перед первым рендерингом, а второй раз должен переопределить отступ, добавленный ядром, который появляется позже во время рендеринга. Если добавить его только один раз, вы увидите сдвиг макета во время рендеринга.
Я заменил <body, <html и теги, чтобы предотвратить дублирование открывающих и закрывающих тегов (добавляемых ядром и темой).
Как уже говорилось, это "грязное" решение, но оно должно работать с большинством тем.
