Saltar al contenido

Wordpress: ¿agregar un separador al menú de administración?

Hola, encontramos la solución a lo que buscabas, deslízate y la verás a continuación.

Solución:

Aquí hay una manera rápida y sucia de conseguir lo que quieres.

Fondo

WordPress almacena las secciones del menú de administración en un global array llamó $menu. Para agregar un separador, agregue un elemento al $menu array utilizando un índice que está entre los índices de las opciones que desea separar.

Utilizando el add_admin_menu_separator() función

Así que he escrito una función para encapsular la lógica de esto que llamé add_admin_menu_separator(). Tendrás que elegir un array número de índice que es más alto que la opción después de lo cual desea agregar un separador y luego llamar a la función add_admin_menu_separator() pasando dicho índice como su parámetro.

Por ejemplo:

add_admin_menu_separator(37);

los add_admin_menu_separator() función en sí

Aquí está la definición de la función. add_admin_menu_separator() que puedes copiar en tu tema functions.php expediente. Sí, es arcano, pero también lo es el código que crea y usa el global. $menu array. (Los planes son eventualmente desaprobarlo, afortunadamente, pero eso probablemente será dentro de algunos años).

function add_admin_menu_separator($position) 
  global $menu;
  $index = 0;
  foreach($menu as $offset => $section) 
    if (substr($section[2],0,9)=='separator')
      $index++;
    if ($offset>=$position) 
      $menu[$position] = array('','read',"separator$index",'','wp-menu-separator');
      break;
    
  
  ksort( $menu );

Encontrar el índice en $menu Que tu necesitas

Para averiguar qué número de índice necesita, puede hacer un var_dump() de $GLOBALS['menu'] desde dentro de un admin_init gancho. Aquí hay un poco de código que puede colocar en su tema functions.php archivo temporalmente para ver cuáles son los valores. Esto solo funcionará cuando se solicite una URL que comience con /wp-admin/(pero asegúrese de hacerlo con FTP y no con el editor de temas incorporado o perderá el acceso a su sitio, al menos hasta que obtenga acceso FTP a su tema). functions.php ¡expediente!):

add_action('admin_init','dump_admin_menu');
function dump_admin_menu() 
  if (is_admin()) 
    header('Content-Type:text/plain');
    var_dump($GLOBALS['menu']);
    exit;
  

Ver también:

Por cierto, puede encontrar estos enlaces útiles en general para trabajar con menús de administración:

  • Cambio del orden de las secciones del menú de administración
  • Más reciente: wp-admin-menu-classes.php

Aunque mis clases del menú de administración actualmente no ofrecen una manera fácil de agregar separadores, creo que ahora lo agregaré cuando tenga tiempo.

Es fácil como:

add_action( 'admin_init', 'add_sep' );
function add_sep() 

    if ( ! is_admin() )
        return false;

    global $menu;
    $sep = $menu[4]; // that's the default separator
    $pos = 6; // change it for the desired position
    $menu = array_merge(
        array_slice( $menu, 0, $pos ),
        array( $sep ),
        array_slice( $menu, $pos + 1, -1)
    );
    $menu[ $pos - 1 ][4] .= ' menu-top-last';
    $menu[ $pos + 1 ][4] .= ' menu-top-first';


Nota: La posición del separador por defecto ($menu[4]) puede ser diferente según la configuración que haya realizado usted (o sus complementos) antes de este gancho.

Por supuesto, también puede ajustar el menu-top-first y menu-top-last Clases de introspección.

Tuve algunos problemas con los separadores que no se agregaron, se debió a la forma en que wordpress elimina los separadores duplicados. agregando ksort($menu); al final de la función se corrigió el problema.

Te invitamos a añadir valor a nuestro contenido dando tu experiencia en las anotaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *