De ce nu funcționează argumentul container pentru wp_nav_menu()

6 feb. 2015, 09:44:12
Vizualizări: 920
Voturi: 0

Următorul cod afișează un meniu, dar lipsește tag-ul container <nav>.

$menu_settings = array(
    'menu' => 'Pachete',
    'container' => 'nav',
    'container_class' => '',
    'container_id' => '',
    'menu_class' => 'menu',
    'menu_id' => '',
    'echo' => true,
    'fallback_cb' => 'wp_page_menu',
    'before' => '',
    'after' => '',
    'link_before' => '',
    'link_after' => '',
    'items_wrap' => '<ul id="%1$s" class="%2$s">%3$s</ul>',
    'depth' => 0,
    'walker' => '',
    'theme_location' => 'primary' );

?>

      <?php wp_nav_menu( $menu_settings ); ?>

Acestea sunt înregistrate în functions.php:

register_nav_menus( array(
 'primary' => __( 'Meniu Pachete', 'nameoftheme'),
 'secondary' => __( 'Meniu Servicii', 'nameoftheme' ),
) );

Se afișează doar un <ul> cu elemente de listă. Elementele listei nu sunt înconjurate nici ele.

5
Comentarii

Te rog să indentăm codul corespunzător. Pe ecrane mai mici, majoritatea codului tău depășește limitele și devine deci ilizibil :-)

Pieter Goosen Pieter Goosen
6 feb. 2015 09:46:22

Am făcut corectări. Trebuie menționat totuși că unii developeri mai puțin rezonabili ar putea să se simtă jigniți când li se spune să "indenteze corespunzător" :-)

codecowboy codecowboy
6 feb. 2015 09:52:52

Asta e adevărat, dar din nou, la latitudinea lor este dacă vor să fie ajutați. Majoritatea utilizatorilor ca mine folosesc dispozitive cu ecrane mici precum telefoanele mobile, iar dacă codul nu este indentat sau adăugat corespunzător, nu îl putem citi și, prin urmare, pur și simplu ignorăm întrebarea. Ca developer, ar trebui să știi cât de frustrant este să citești cod și să-l debughezi dacă are probleme de formatare. :-) Acestea sunt doar gândurile și un sfat din partea mea. Este adevărat, lizibilitatea unei întrebări influențează cantitatea de feedback pozitiv pe care îl primești înapoi

Pieter Goosen Pieter Goosen
6 feb. 2015 09:59:13

Codul pare să fie în regulă. Tocmai l-am testat și afișează corect containerul de navigație, precum și elementele încapsulate.

User User
6 feb. 2015 10:12:44

Se mai întâmplă acest lucru, după ce ai dezactivat toate pluginurile și ai trecut la una dintre temele Twenty*? Te rugăm să urmezi procesul din link pentru a identifica pluginul sau tema conflictuală.

kaiser kaiser
10 feb. 2015 10:37:40
Toate răspunsurile la întrebare 1
1

Deoarece folosesc cadrul tematic roots, această linie elimină argumentul container:

function roots_nav_menu_args($args = '') {
  $roots_nav_menu_args = array();
  $roots_nav_menu_args['container'] = false;
  if (!$args['items_wrap']) {
    $roots_nav_menu_args['items_wrap'] = '<ul class="%2$s">%3$s</ul>';
  }
  if (!$args['depth']) {
    $roots_nav_menu_args['depth'] = 2;
  }
  return array_merge($args, $roots_nav_menu_args);
}
add_filter('wp_nav_menu_args', 'roots_nav_menu_args');
6 feb. 2015 13:09:53
Comentarii

Acum această funcționalitate poate fi găsită în Soil: add_theme_support('soil-nav-walker');

Sven Sven
5 dec. 2018 07:00:06