{"id":202,"date":"2016-03-12T04:37:18","date_gmt":"2016-03-12T09:37:18","guid":{"rendered":"https:\/\/wjharil.com\/blog\/?p=202"},"modified":"2016-03-12T04:37:38","modified_gmt":"2016-03-12T09:37:38","slug":"menu-multinivel-php","status":"publish","type":"post","link":"https:\/\/wjharil.com\/blog\/menu-multinivel-php\/","title":{"rendered":"Creando un menu multinivel con PHP"},"content":{"rendered":"<p>Luego de ausentarme por varios meses debido a proyectos personales, vuelvo a traerles un tutorial y esta vez es sobre c\u00f3mo <strong>crear un menu multinivel con php<\/strong>.<\/p>\n<p>Para este tutorial, usaremos <a title=\"Conoce m\u00e1s sobre los arrays\" href=\"http:\/\/php.net\/manual\/es\/language.types.array.php\" target=\"_blank\"><strong>arrays<\/strong> <\/a>que contengan la siguiente estructura:<\/p>\n<pre class=\"lang:php decode:true \">$menu_array = array(\r\narray('id'=&gt;\u2026, 'padre_id'=&gt;\u2026, 'nombre'=&gt;\u2026, 'url'=&gt;\u2026),\r\narray('id'=&gt;\u2026, 'padre_id'=&gt;\u2026, 'nombre'=&gt;\u2026, 'url'=&gt;\u2026),\r\n...\r\n);<\/pre>\n<p>Como podemos ver, tenemos los<em> campos id, padre_id, nombre y url<\/em>. Este array tambi\u00e9n se puede obtener si tenemos una <strong>base de datos<\/strong>, as\u00ed que no tendr\u00e1s problema en acoplarlo.<\/p>\n<p>Luego de tener declarado nuestra variable $menu_array, el cu\u00e1l contiene los items del menu, tenemos que realizar una <em>funci\u00f3n recursiva<\/em> la cual verifique si el padre_id es igual al id actual del item para listar los hijos. Para ello, tenemos \u00e9sta simple <strong>funci\u00f3n<\/strong>:<\/p>\n<pre class=\"lang:php decode:true\">function generar_menu($array,$padre_id = 0)\r\n{\r\n  $menu_html = '&lt;ul&gt;';\r\n  foreach($array as $elemento)\r\n  {\r\n    if($element['padre_id']==$padre_id)\r\n    {\r\n      $menu_html .= '&lt;li&gt;&lt;a href=\"'.$elemento['url'].'\"&gt;'.$elemento['nombre'].'&lt;\/a&gt;';\r\n      $menu_html .= generar_menu($array,$elemento['id']);\r\n      $menu_html .= '&lt;\/li&gt;';\r\n    }\r\n  }\r\n  $menu_html .= '&lt;\/ul&gt;';\r\n  return $menu_html;\r\n}\r\n\r\necho generar_menu($menu_array,0);<\/pre>\n<p>Como podemos ver en la funci\u00f3n anterior, hacemos un <strong>foreach<\/strong> para entrar a cada item del menu y, suponiendo que el padre_id del menu padre es 0,\u00a0 verificamos si es que tiene hijos para luego <strong>concatenarlo<\/strong> con la variable $menu_html, el cu\u00e1l generar\u00e1 un listado con los datos requeridos.<\/p>\n<p>De esta manera, podemos crear nuestro <strong>menu multinivel<\/strong> de una manera r\u00e1pida y sencilla con <strong>php<\/strong>. Si tienes alguna duda, no lo pienses dos veces y comentalo para poder ayudarte.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Luego de ausentarme por varios meses debido a proyectos personales, vuelvo a traerles un tutorial<br \/><a class=\"moretag\" href=\"https:\/\/wjharil.com\/blog\/menu-multinivel-php\/\">Continuar Leyendo...<\/a>","protected":false},"author":1,"featured_media":203,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[35],"tags":[],"featured_image_src":"https:\/\/wjharil.com\/blog\/wp-content\/uploads\/2016\/03\/menu-multinivel-php.jpg","categorias":["Facebook","Fuera de tema","Recursos","Tutoriales"],"_links":{"self":[{"href":"https:\/\/wjharil.com\/blog\/wp-json\/wp\/v2\/posts\/202"}],"collection":[{"href":"https:\/\/wjharil.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wjharil.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wjharil.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wjharil.com\/blog\/wp-json\/wp\/v2\/comments?post=202"}],"version-history":[{"count":2,"href":"https:\/\/wjharil.com\/blog\/wp-json\/wp\/v2\/posts\/202\/revisions"}],"predecessor-version":[{"id":205,"href":"https:\/\/wjharil.com\/blog\/wp-json\/wp\/v2\/posts\/202\/revisions\/205"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wjharil.com\/blog\/wp-json\/wp\/v2\/media\/203"}],"wp:attachment":[{"href":"https:\/\/wjharil.com\/blog\/wp-json\/wp\/v2\/media?parent=202"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wjharil.com\/blog\/wp-json\/wp\/v2\/categories?post=202"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wjharil.com\/blog\/wp-json\/wp\/v2\/tags?post=202"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}