K@m@l نشر 27 نوفمبر 2015 أرسل تقرير نشر 27 نوفمبر 2015 لدي القائمة التالية المكتوبة بلغة html، حيث اعتمدت على نفس الهندسة المتبعة من خلال الدالة wp_nav_menu على ووردبريس: <ul class="main-nav"> <li class="item"> <a href="http://example.com/?p=123" class="title">Title</a> <a href="http://example.com/?p=123" class="desc">Description</a> <ul class="sub-menu"> <li class="item"> <a href="http://example.com/?p=123" class="title">Title</a> <a href="http://example.com/?p=123" class="desc">Description</a> </li> </ul> </li> <li class="item"> <a href="http://example.com/?p=123" class="title">Title</a> <a href="http://example.com/?p=123" class="desc">Description</a> </li> </ul>وأستعمل حاليا الدالة wp_get_nav_menu_items للحصول على القائمة من خلال برنامج إدارة المحتوى ووردبريس على الشكل:<?php $menu_name = 'main-nav'; $locations = get_nav_menu_locations() $menu = wp_get_nav_menu_object( $locations[ $menu_name ] ); $menuitems = wp_get_nav_menu_items( $menu->term_id, array( 'order' => 'DESC' ) ); foreach ( $menuitems as $item ): $id = get_post_meta( $item->ID, '_menu_item_object_id', true ); $page = get_page( $id ); $link = get_page_link( $id ); ?> <li class="item"> <a href="<?php echo $link; ?>" class="title"> <?php echo $page->post_title; ?> </a> <a href="<?php echo $link; ?>" class="desc"> <?php echo $page->post_excerpt; ?> </a> </li> <?php endforeach; ?>لكن أصادف مشكل في عدم ظهور القوائم بشكل كلي مع القوائم الفرعية، ما الذي ينقصني في الشيفرة الحالية؟ اقتباس
0 E.Nourddine نشر 27 نوفمبر 2015 أرسل تقرير نشر 27 نوفمبر 2015 أولا لنجعل القائمة داخل مصفوفات، بهذا الشكل:<?php $menu_name = 'main_nav'; $locations = get_nav_menu_locations(); $menu = wp_get_nav_menu_object( $locations[ $menu_name ] ); $menuitems = wp_get_nav_menu_items( $menu->term_id, array( 'order' => 'DESC' ) ); ?>لتصفح القوائم عن طريق حلقات التكرار وإظهارها في كود داخل وسم <nav>:<nav> <ul class="main-nav"> <?php $count = 0; $submenu = false; foreach( $menuitems as $item ): // set up title and url $title = $item->title; $link = $item->url; // item does not have a parent so menu_item_parent equals 0 (false) if ( !$item->menu_item_parent ): // save this id for later comparison with sub-menu items $parent_id = $item->ID; ?>كتابة أول عنصر بداخل وسم <li>: <li class="item"> <a href="<?php echo $link; ?>" class="title"> <?php echo $title; ?> </a> <?php endif; ?>التأكّد من أن العنصر يقع داخل القائمة الأم: <?php if ( $parent_id == $item->menu_item_parent ): ?>القوائم الفرعية: <?php if ( !$submenu ): $submenu = true; ?> <ul class="sub-menu"> <?php endif; ?>كتابة القوائم الفرعية: <li class="item"> <a href="<?php echo $link; ?>" class="title"><?php echo $title; ?></a> </li>القائمة التالية لا يجب أن تتوفر على نفس parent_id:<?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id && $submenu ): ?> </ul> <?php $submenu = false; endif; ?> <?php endif; ?>في حالة كان للقائمة parent_id مختلف نغلق وسم <li>: <?php if ( $menuitems[ $count + 1 ]->menu_item_parent != $parent_id ): ?> </li> <?php $submenu = false; endif; ?> <?php $count++; endforeach; ?> </ul> </nav>wp_custom_nav اقتباس
السؤال
K@m@l
لدي القائمة التالية المكتوبة بلغة html، حيث اعتمدت على نفس الهندسة المتبعة من خلال الدالة wp_nav_menu على ووردبريس:
وأستعمل حاليا الدالة wp_get_nav_menu_items للحصول على القائمة من خلال برنامج إدارة المحتوى ووردبريس على الشكل:
لكن أصادف مشكل في عدم ظهور القوائم بشكل كلي مع القوائم الفرعية، ما الذي ينقصني في الشيفرة الحالية؟
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.