Agregar encabezado y pie de página al backend de WordPress

3 may 2012, 17:59:56
Vistas: 21.1K
Votos: 6

Quiero agregar un encabezado en el panel de administración para que se vea más integrado como el frontend. No quiero agregar mucho, solo el encabezado y pie de página es suficiente. La sección de contenido mantiene el estilo original.

Pero no puedo encontrar un hook apropiado para esta área. Intenté agregar get_header(); en admin-header.php y funciona. Sin embargo, no quiero modificar los archivos del core de WordPress, así que ¿hay alguna otra manera de agregar los archivos?

ACTUALIZACIÓN

Después de meses de investigación, finalmente abandoné la idea de agregar el encabezado y pie de página del frontend al backend. En su lugar, simplemente uso las páginas del frontend como panel de control del usuario. Aunque esto implica mucho trabajo (lo hago manualmente, no con un plugin), es más flexible.

Sin embargo, igualmente agradezco los consejos/sugerencias.

0
Todas las respuestas a la pregunta 8
1

La acción in_admin_header puede utilizarse para insertar contenido antes de <div id="wpbody"> en el panel de administración de WordPress.

Ver Línea 101 de /wp-admin/admin-header.php (número de línea correspondiente a la versión 3.3.2)

Lectura adicional sobre acciones: Referencia de Acciones, codex

3 may 2012 20:00:20
Comentarios

sí... esto también funciona, pero todavía muestra el menú a la izquierda, no envuelto bajo el cuerpo principal... encontré que admin_head puede hacer eso, pero agrega el encabezado en la sección <head></head> lo cual tampoco es una solución ideal... sin embargo, gracias por tus consejos...

dev-jim dev-jim
4 may 2012 14:35:06
3

Sé que esto puede parecer una locura, pero usando iframes para el encabezado y pie de página y agregando a functions.php o creando un plugin:

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

function frontfooter() {
    echo 'IFRAME';
}
add_action('admin_footer', 'frontfooter');
21 nov 2012 23:47:31
Comentarios

No creo que esto vaya a funcionar como esperas. admin_head se ejecuta dentro de la sección <head>. admin_footer podría funcionar.

chrisguitarguy chrisguitarguy
22 nov 2012 01:13:33

Tienes razón, sería eso

user1757516 user1757516
22 nov 2012 02:09:19

Si funciona, ¿puedes marcar mi respuesta como aceptada?

user1757516 user1757516
24 nov 2012 06:12:43
0

Algo que interfiere con el concepto de header/footer es el Menú de Administración del lado izquierdo.
Pero con la ayuda del Menú Desplegable de Administración de Ozh', y su complemento Admin Menus Fixed, es posible colocar el menú en otra posición e insertar nuestro HTML personalizado superior e inferior.

Imagen demostrativa del menú desplegable
haz clic para ampliar

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 feb 2013 05:03:49
0

Según tu descripción, la parte que probablemente quieras envolver es el div con la clase wpwrap. Sin embargo, no hay ganchos adecuados fuera de él, además de que necesitarás hacer algo con la barra de herramientas y demás.

El área de administración de WordPress se considera (hasta ahora) muy inflexible y difícil de personalizar profundamente, en comparación con el front-end. Puede tener más sentido trabajar con estilos CSS y los elementos existentes, en lugar de intentar introducir elementos nuevos importantes.

17 nov 2012 21:40:01
0

¿Estás intentando que el backend se parezca al frontend para que los usuarios accedan a su perfil?

De lo contrario, ¿cuál es la razón por la que quieres el encabezado y pie de página en el backend?

Si quieres dar acceso a los usuarios a su perfil, puedes usar http://wordpress.org/extend/plugins/user-meta/ para crear un perfil/panel frontal que tenga el encabezado y pie de página.

También hay varias funciones y plugins que pueden eliminar campos de perfil innecesarios.

11 ene 2013 15:26:14
3

Añade esto a function.php

add_action( 'admin_head', 'insert_header_wpse_51023' );

function insert_header_wpse_51023()
{
    echo '  <div class="header">
            contenido para tu cabecera
            </div>';
}
30 may 2014 12:47:13
Comentarios

No puedes colocar un elemento div dentro de un elemento head. Eso es HTML inválido.

fuxia fuxia
30 may 2014 12:56:22

a mí me funciona

hzrcan hzrcan
30 may 2014 12:57:15

Crea HTML inválido. Solo porque se vea bien en algunos navegadores, no significa que realmente "funcione".

fuxia fuxia
30 may 2014 13:07:19
0

Sé que este es un tema antiguo pero puede ayudar a alguien más que lo necesite. Dentro de functions.php agrega lo siguiente:

add_action( 'in_admin_header', 'my_header' );
function my_header()
{
if ( current_user_can( 'subscriber' ) ) { // Si el usuario es suscriptor, elimina la sentencia IF para todos los usuarios.
    include('../wp-content/themes/YOUR_TEMPLATE_NAME/header.php'); // Agregando header.php
    echo '<style>body {background: #fff;}</style>'; // Agregando algunos estilos, también se puede agregar un archivo .css aquí.
  }
}
16 dic 2019 16:23:34
0

Si alguien todavía necesita agregar el encabezado (header) y pie de página (footer) del frontend al backend, tal vez esto pueda ayudar:

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(); // Por si acaso tienes 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(); // Por si acaso tienes WPBakery pagebuilder
  }
  $frontend_footer = ob_get_clean();
  echo do_shortcode( str_replace( '</html>','',str_replace( '</body>','</div>',$frontend_footer ) ) );
} );

No es posible hacerlo de una manera limpia porque estamos intentando hacer algo un poco "sucio" aquí, pero creo que este es un buen compromiso entre lo sucio y el objetivo que queremos alcanzar.

Todo lo que podemos eliminar mediante PHP lo eliminamos mediante PHP, el resto se ocultará con un CSS poco elegante. He asignado dos veces un margen superior cero al elemento HTML porque la primera vez tiene que analizarse justo antes del primer renderizado, y la segunda vez tiene que anular el margen agregado por el núcleo que llega más tarde durante el renderizado. Si lo agregas solo una vez, verás un cambio de diseño durante el renderizado.

Reemplacé <body, <html, y para evitar etiquetas de apertura y cierre dobles (agregadas por el núcleo y el tema).

Como se mencionó, esta es una solución poco elegante, pero debería funcionar con la mayoría de los temas.

12 feb 2023 02:26:03