it-swarm-id.com

Hasilkan Menu yang Menampilkan Halaman Anak menggunakan wp_list_pages () dengan Fungsi Menu Baru di WordPress 3.0?

Sebelumnya, saya dapat memuat halaman anak secara selektif untuk halaman induk yang saat ini dipilih menggunakan logika seperti:

if(  $post->post_parent ) {
  $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
} else {
  $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
}

if ($children) { ?>
   <ul id="subnav">
     <?php echo $children; ?>
   </ul>
<?php 
} else {
}

Tampaknya tidak ada cara asli untuk melakukan ini menggunakan fungsionalitas register_nav_menus ()/wp_nav_menu () yang baru. Adakah yang tahu bagaimana saya bisa menambal ini bersama pada saat ini?

Berikut screenshot dari apa yang saya coba capai:

Drop down Child menu screenshot

10
ZaMoose

Saya membuat Widget bernama Page Sub Navigation (pintar saya tahu) yang berfungsi untuk saya.

Jika Anda menginstal ini, Anda bisa menarik widget ke salah satu area widget Anda danBAMberfungsi.

<?php
/*
Plugin Name: Page Sub Navigation
Plugin URI: http://codegavin.com/wordpress/sub-nav
Description: Displays a list of child pages for the current page
Author: Jesse Gavin
Version: 1
Author URI: http://codegavin.com
*/

function createPageSubMenu()
{
  if (is_page()) {
    global $wp_query;

    if( empty($wp_query->post->post_parent) ) {
      $parent = $wp_query->post->ID;
    } else {
      $parent = $wp_query->post->post_parent;
    }

    $title = get_the_title($parent);

    if(wp_list_pages("title_li=&child_of=$parent&echo=0" )) {
      echo "<div id='submenu'>";
      echo "<h3><span>$title</span></h3>";
      echo "<ul>";
      wp_list_pages("title_li=&child_of=$parent&echo=1" );
      echo "</ul>";
      echo "</div>";
    }
  }
}


function widget_pageSubNav($args) {
  extract($args);
  echo $before_widget;
  createPageSubMenu();
  echo $after_widget;
}

function pageSubMenu_init()
{
  wp_register_sidebar_widget("cg-sidebar-widget", __('Page Sub Navigation'), 'widget_pageSubNav');
}
add_action("plugins_loaded", "pageSubMenu_init");
?>

Atau jika Anda hanya ingin bagian yang berair ...

if (is_page()) {
  global $wp_query;

  if( empty($wp_query->post->post_parent) ) {
    $parent = $wp_query->post->ID;
  } else {
    $parent = $wp_query->post->post_parent;
  }

  if(wp_list_pages("title_li=&child_of=$parent&echo=0" )) {
    wp_list_pages("title_li=&child_of=$parent&echo=1" );
  }
}

MEMPERBARUI

Saya menemukan plugin lain yang pada dasarnya melakukan hal yang sama (dan mungkin lebih baik, saya tidak tahu). http://wordpress.org/extend/plugins/subpages-widget/

9
jessegavin

anda bisa melakukan css hack untuk melakukan ini (2 cara yang akan saya coba)

1 ini adalah cara termudah yang dapat saya pikirkan untuk membuat css menampilkan item dalam subnavigation.

.current-menu-ancestor ul {display:inline;}
.current-menu-parent ul (display:inline;}

2 dengan asumsi bahwa tema Anda mendukung kelas tubuh Anda dapat membuat menu nav untuk setiap "sub nav", dan mengaturnya untuk ditampilkan di bawah navigasi utama - lalu edit stylesheet Anda untuk hanya menampilkan div subnav menggunakan sesuatu seperti ini:

.child-menu-about, .child-menu-leadership {display:none;}
body.page-id-YOUR_ABOUT_PAGE_ID .child-menu-about {display:inline;}
body.category-YOUR-CATEGORY-SLUG  .child-menu-leadership {display:inline;}
3
rfair404
<nav class="site-nav children-link">
                <?php       

                    if(  $post->post_parent ) 
                    {
                      $children = wp_list_pages("title_li=&child_of=".$post->post_parent."&echo=0");
                    } 
                    else 
                    {
                      $children = wp_list_pages("title_li=&child_of=".$post->ID."&echo=0");
                    }

                    if ($children) { ?>
                       <ul>

                            <?php echo $children; ?>

                       </ul>

                    <?php 
                        } else {
                        }
                ?>
        </nav>

CSS

/*children-links links*/

.children-link 
{       

        background-color: #1a5957;
        color:#FFF;
        font-size: 100%;

}

.children-link li
{
    margin: 10px;   


}

.children-link ul li a:link,
.children-link ul li a:visited 
{
        padding: 15px 17px;
        text-decoration: none;
        border: 1px solid #1a5957;

}
.children-link ul li a:hover 
{
        background-color: #1a5957;
        color:#FFF;
        font-weight: bold;

}
.children-link .current_page_item a:link,
.children-link .current_page_item a:visited
{

    background-color: #1a5957;
    color: #FFF;
    cursor: default;
}
0
maulik

 enter image description here  1 ini adalah tampilan php.

 enter image description here  2 ini adalah tampilan css.

0
maulik