Добавление шапки и подвала в панель администратора WordPress

3 мая 2012 г., 17:59:56
Просмотры: 21.1K
Голосов: 6

Я хочу добавить шапку в административную панель, чтобы она выглядела более согласованно с фронтендом. Ничего особенного, достаточно просто шапки и подвала. Секция контента должна остаться в оригинальном стиле.

Но я не могу найти подходящий хук для этой области. Я пробовал добавить get_header(); в admin-header.php и это работает. Однако, я не хочу вмешиваться в core-файлы WordPress, поэтому есть ли другой способ добавить эти файлы?

ОБНОВЛЕНИЕ

После нескольких месяцев исследований я окончательно отказался от идеи добавления шапки и подвала фронтенда в админ-панель. Вместо этого я использую страницы фронтенда в качестве пользовательской панели управления. Хотя это потребовало много работы (я делал это вручную, без плагинов), но такой подход оказался более гибким.

Тем не менее, спасибо за советы и предложения.

0
Все ответы на вопрос 8
1

Действие in_admin_header может быть использовано для вставки контента перед <div id="wpbody"> в админ-панели WordPress.

Смотрите строку 101 файла /wp-admin/admin-header.php (номер строки соответствует версии 3.3.2)

Дополнительная информация о действиях: Справочник по действиям, codex

3 мая 2012 г. 20:00:20
Комментарии

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

dev-jim dev-jim
4 мая 2012 г. 14:35:06
3

Я знаю, что это может показаться безумным, но использование iframe для шапки и подвала и добавление в functions.php или создание плагина:

function frontheader() {
    echo 'IFRAME';
}
add_action('admin_head', 'frontheader');

function frontfooter() {
    echo 'IFRAME';
}
add_action('admin_footer', 'frontfooter');
21 нояб. 2012 г. 23:47:31
Комментарии

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

chrisguitarguy chrisguitarguy
22 нояб. 2012 г. 01:13:33

вы правы, так и есть

user1757516 user1757516
22 нояб. 2012 г. 02:09:19

если это сработает, не могли бы вы отметить мой ответ как принятый

user1757516 user1757516
24 нояб. 2012 г. 06:12:43
0

Одной из помех для концепции верхнего и нижнего колонтитулов является левое административное меню.
Но с помощью 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>';
}
3 февр. 2013 г. 05:03:49
0

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

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

17 нояб. 2012 г. 21:40:01
0

Вы пытаетесь сделать бэкенд похожим на фронтенд, чтобы пользователи могли получить доступ к своему профилю?

Или есть другая причина, по которой вы хотите видеть шапку и подвал в бэкенде?

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

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

11 янв. 2013 г. 15:26:14
3

Добавьте это в function.php

add_action( 'admin_head', 'insert_header_wpse_51023' );

function insert_header_wpse_51023()
{
    echo '  <div class="header">
            содержимое для вашего заголовка
            </div>';
}
30 мая 2014 г. 12:47:13
Комментарии

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

fuxia fuxia
30 мая 2014 г. 12:56:22

у меня работает

hzrcan hzrcan
30 мая 2014 г. 12:57:15

Это создаёт некорректный HTML. Просто потому, что в некоторых браузерах это выглядит нормально, ещё не значит, что это "работает".

fuxia fuxia
30 мая 2014 г. 13:07:19
0

Я знаю, что это старая тема, но она может помочь кому-то еще, кому это нужно. В файл 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 файл.
  }
}
16 дек. 2019 г. 16:23:34
0

Если кому-то всё ещё нужно добавить фронтенд-шапку и подвал в админку, возможно, это поможет:

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 и теги, чтобы предотвратить дублирование открывающих и закрывающих тегов (добавляемых ядром и темой).

Как уже говорилось, это "грязное" решение, но оно должно работать с большинством тем.

12 февр. 2023 г. 02:26:03