Aunque WordPress incluye mucha flexibilidad a la hora de crear menús, la ubicación de los mismos parece tener que ceñirse obligatoriamente a posiciones preestablecidas. Y eso, en algunos diseños, puede resultar problemático.
En este mini post vamos a guiaros para que podáis crear un shortcode que os permita ponerlos allá donde necesitéis:
1º Creamos el menú que queramos (Apariencia > Menús) y nos fijamos muy especialmente en el nombre que le demos:
2º Como de costumbre, vamos al archivo [codigo]functions.php[/codigo] de nuestro theme (aunque lo ideal sería hacerlo con un tema hijo o crear uno si no existiese) e insertamos el siguiente código:
function cetweb_print_custom_menu_shortcode($atts) { // Normalize $atts = array_change_key_case((array)$atts, CASE_LOWER); $atts = array_map('sanitize_text_field', $atts); // Attributes $menu_name = $atts['name']; $menu_class = $atts['class']; return wp_nav_menu(array( 'menu' => esc_attr($menu_name), 'menu_class' => 'menu ' . esc_attr($menu_class), 'echo' => false)); } add_shortcode('print-menu', 'cetweb_print_custom_menu_shortcode');
3º Y de esta forma ya hablemos creado la llamada al menú de WordPress, a través de un shortcode.
Se invoca así:
[print-menu name="nombre-tu-menu"]
Donde debemos sustituir «nombre-tu-menu» por el nombre en el que nos fijamos en el paso 1º.
Este shortcode permite además añadir estilos que nos permiten personalizar su presentación:
[print-menu name="nombre-tu-menu" class="clase1 clase2 clase 3"]
Muy útil la información. Estaba buscando un ‘truco’ así. Gracias! 😊
Por mi parte también un gran gracias. Ese era exactamente el truco que estaba buscando. Funciona genial.
Gracias, actualice mi tema y después no funcionaba los shortcode, con este post pude solucionarlo, gracias por compartir.
Muy bueno. Gracias.
Hice una pequeña modificación; ya que, al no añadir estilos me salía la siguiente advertencia de PHP: Undefined array key «class». Aquí la dejo.
$menu_class = array_key_exists(‘class’, $atts)?$atts[‘class’]:»;