it-swarm-ko.tech

WordPress 3.0의 새 메뉴 기능으로 wp_list_pages ()를 사용하여 하위 페이지를 표시하는 메뉴를 생성 하시겠습니까?

이전에는 다음과 같은 로직을 사용하여 현재 선택된 상위 페이지의 하위 페이지를 선택적으로로드 할 수있었습니다.

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 {
}

새로운 register_nav_menus ()/wp_nav_menu () 기능을 사용하여이를 수행하는 기본 방법이없는 것 같습니다. 누구든지이 시점에서 함께 패치 할 수있는 방법을 알고 있습니까?

다음은 내가 달성하려고하는 스크린 샷입니다.

Drop down Child menu screenshot

10
ZaMoose

나는 나를 위해 일하는 Page Sub Navigation (내가 아는 영리한)이라는 위젯을 만들었다.

이것을 설치하면 위젯 영역 중 하나에 위젯을 끌어다 놓을 수 있으며BAM작동합니다.

<?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");
?>

아니면 당신이 육즙 부분을 원한다면 ...

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" );
  }
}

최신 정보

나는 본질적으로 같은 것을하는 또 다른 플러그인을 발견했다. http://wordpress.org/extend/plugins/subpages-widget/

9
jessegavin

당신은 이것을 해보기 위해 CSS 해킹을 할 수있다. (시도 할 2 가지 방법)

1 이것은 내가 생각할 수있는 가장 쉬운 방법이다. css가 서브 네비게이션의 항목을 표시하게 만든다.

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

2 귀하의 테마가 바디 클래스를 지원한다고 가정하면 각 "서브 네비게이션"에 대한 탐색 메뉴를 생성하고 메인 네비게이션 아래에 표시되도록 설정할 수 있습니다. 그런 다음 스타일 시트를 편집하여 다음과 같은 방식으로 서브 그룹 div를 표시하십시오 :

.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 이것은 PHP 디스플레이입니다.

 enter image description here  2 이것은 CSS 디스플레이입니다.

0
maulik