menú WordPress

Crear un menú programáticamente y asignarlo a una zona del tema

01 de Mar, 2018

Crear un menú programáticamente y asignarlo a una zona del tema
4.5 (90%) 2 votes

Se nos puede presentar la ocasión en la que debemos crear menús de forma dinámica y programáticamente a través del código de PHP y asignarlo a una zona del tema, para ello usaremos la función de WordPress wp_create_nav_menu(), incluiremos cada ítem del menú con la función wp_update_nav_menu_item() y luego le asignaremos su lugar dentro del tema.

Comenzamos creando un Menú que llamaremos “Social Footer”

  1. <pre>$menu_name = 'Social Footer';
  2. $menu_exists = wp_get_nav_menu_object( $menu_name );
  3.  
  4. // Si no existe lo creamos.
  5. if( !$menu_exists){
  6. $menu_id = wp_create_nav_menu($menu_name);

Ya tenemos creado el menú ahora le agregaremos los items

  1. wp_update_nav_menu_item($menu_id, 0, array(
  2.          'menu-item-title' =>  __('<i class="fa fa-facebook"></i>'),
  3.          'menu-item-url' => home_url( 'https://www.facebook.com/mifacebook' ),
  4.          'menu-item-status' => 'publish'));
  5.       wp_update_nav_menu_item($menu_id, 0, array(
  6.          'menu-item-title' =>  __('<i class="fa fa-twitter"></i>'),
  7.          'menu-item-url' => home_url( 'https://twitter.com/mitwitter' ),
  8.          'menu-item-status' => 'publish'));
  9.       wp_update_nav_menu_item($menu_id, 0, array(
  10.          'menu-item-title' =>  __('<i class="fa fa-instagram"></i>'),
  11.          'menu-item-url' => home_url( 'https://www.instagram.com/miinstagram/' ),
  12.          'menu-item-status' => 'publish'));
  13.       wp_update_nav_menu_item($menu_id, 0, array(
  14.          'menu-item-title' =>  __('<i class="fa fa-linkedin"></i>'),
  15.          'menu-item-url' => home_url( 'http://www.linkedin.com/milinkedin' ),
  16.          'menu-item-status' => 'publish'));
  17.       wp_update_nav_menu_item($menu_id, 0, array(
  18.          'menu-item-title' =>  __('<i class="fa fa-youtube"></i>'),
  19.          'menu-item-url' => home_url( 'https://www.youtube.com/miyoutube' ),
  20.          'menu-item-status' => 'publish'));
  21.       wp_update_nav_menu_item($menu_id, 0, array(
  22.          'menu-item-title' =>  __('<i class="fa fa-google-plus"></i>'),
  23.          'menu-item-url' => home_url( 'https://goo.gl/maps/xxx4444' ),
  24.          'menu-item-status' => 'publish'));
  25. // A este ítem le agregaremos inclusive que abra en otra ventana
  26.       wp_update_nav_menu_item($menu_id, 0, array(
  27.          'menu-item-title' =>  __('<i class="fa fa-map-marker"></i>'),
  28.          'menu-item-url' => home_url( 'https://plus.google.com/+miusuariogoogleplus/posts' ),
  29.          'menu-item-target' => '_blank',
  30.          'menu-item-status' => 'publish'));

Ya tenemos el menu y sus items, ahora buscamos su lugar dentro del tema, en este caso la localización del menú será en el menu-5

  1. // Obtenemos todas las áreas de menú
  2. $locations = get_theme_mod('nav_menu_locations');
  3. // Asignamos el id área del menu
  4. $locations['menu-5'] = $menu_id;
  5. //volvemos a cargar todas las áreas
  6. set_theme_mod( 'nav_menu_locations', $locations );

Con esto ya tendremos el menú en nuestra ubicación al pie de página todo desde php.