2011-04-24 3 views
5

저는 Wordpress 3.0을 다루려고합니다. 오히려 멋진 일이지만 한 가지 문제 만 해결할 수는 없습니다. 예를 들어, 나는 그런 메뉴 트리가 있습니다. 메뉴 트리는 페이지로 구성됩니다.메뉴 트리의 일부를 표시하는 방법은 무엇입니까?

Home 
    news 
    video 
    audio 
Blog 
    About author 
    Favourite colors 
     red 
     blue 
     green 
My car 
    wheels 
    tires 

아이디어입니다 : 내가 현재 활성 루트 요소의 자식 요소를 표시하고 싶은 집, 블로그, 왼쪽에서 내 차 : 메인 메뉴는 루트 요소로 구성되어 있습니다.

exammple를 들어

사람이 "홈"페이지에있는 경우, 왼쪽에 그가 볼 수 :

news 
    video 
    audio 

을 사용자가 "블로그"페이지에있는 경우, 그 표시되어야합니다

About author 
     Favourite colors 
      red 
      blue 
      green 

내가 할 API를 찾을 수 없습니다. 당신이 나에게 그것을 sugest 할 수 있습니까?

UPD : @ 제이슨 맥 크리 어리 내가 wp_list_pages을 본 적이 볼()와 그것을 시도했습니다. , 페이지 내 템플릿을 참조하십시오 :

<?php wp_list_pages('echo=0&child_of=8&title_li='); ?> 

내가 ID = 8 페이지를 수행

<?php 
/* 
Template Name: page_news 

* @package WordPress 
* @subpackage Twenty_Ten 
* @since Twenty Ten 1.0 
*/ 

get_header(); ?> 
<h1>page_news</h1> 
<h1>Children menu:</h1> 
<?php wp_list_pages('echo=0&child_of=8&title_li='); ?> 
<div id="container"> 
     <div id="content" role="main"> 

     <?php 
     /** Get category id by name*/ 
     //$catId = get_category_by_slug('news')->term_id; 
     query_posts('category_name=news'); 
     get_template_part('loop', 'page'); 
     ?> 

     </div><!-- #content --> 
</div><!-- #container --> 

<?php get_sidebar(); ?> 
<?php get_footer(); ?> 

이 코드 줄을 참조하십시오 나는 그것을 사용하는 방법을 얻을 din't (나는 URL에서 그것을 본다). id = 8 인 페이지에는 여러 개의 하위 항목이 있습니다. 인쇄하고 싶지만 인쇄되지는 않습니다. wp_list_pages() 함수의 결과는 아무것도 아닙니다. 나는

답변

-1

서버 측에서 worpress site taxonomy의 출력 부분을 탐색하는 방법에 대해 살펴 보았습니다. jquery를 사용하여 활성 택 소노 미 분기를 메인 메뉴를 열고 필요한 페이지 컨테이너에 붙여 넣으십시오.

+1

좋은 생각이지만 나쁜 접근입니다. 대부분의 경우 서버 측에서 할 수있는 모든 것을 제공하는 것이 좋으며 클라이언트 측에서해야 할 일만 제공해야합니다. – Shahar

1

체크 아웃 wp_list_pages(). 그것은 아이의 탐색을 제공하는 데 유용합니다

+0

그래서 주요 아이디어는 단지 페이지 목록을 원하지 않는다는 것입니다. 지정된 id에서 시작하는 하위 탐색을 인쇄하고 싶습니다. 예를 들어, "Blog"라는 페이지의 pageId를 지정하고 블로그 분기의 하위 탐색을 얻습니다. – Sergey

+0

'wp_list_page()'에'child_of '를 설정하면 함수는 ** 부모 메뉴의 하위가 아닌 ** 게시물의 하위 항목을 반환합니다. – Shahar

0

Breadcrumb navxt 플러그인을 사용할 수 있습니다. 그것은 정확히 당신이 찾고있는 것과 정말로 훌륭한 것입니다. Breadcrumb NavXT Pugin

23

이 작업을 수행하려면 filter_hook을 작성할 수 있습니다.

내 방법 내 사용자 정의 후크 사용 wp_nav_menu에 대한 추가 start_in 인수를 만듭니다

이 가 는 다음, 템플릿 당신은 단지 페이지의 ID를 포함하는 추가 start_in 인수 wp_nav_menu 전화에서 원하는

# in functions.php add hook & hook function 
add_filter("wp_nav_menu_objects",'my_wp_nav_menu_objects_start_in',10,2); 

# filter_hook function to react on start_in argument 
function my_wp_nav_menu_objects_start_in($sorted_menu_items, $args) { 
    if(isset($args->start_in)) { 
     $menu_item_parents = array(); 
     foreach($sorted_menu_items as $key => $item) { 
      // init menu_item_parents 
      if($item->object_id == (int)$args->start_in) $menu_item_parents[] = $item->ID; 

      if(in_array($item->menu_item_parent, $menu_item_parents)) { 
       // part of sub-tree: keep! 
       $menu_item_parents[] = $item->ID; 
      } else { 
       // not part of sub-tree: away with it! 
       unset($sorted_menu_items[$key]); 
      } 
     } 
     return $sorted_menu_items; 
    } else { 
     return $sorted_menu_items; 
    } 
} 
을 아이들 끄기 :

wp_nav_menu(array( 
    'theme_location' => '<name of your menu>', 
    'start_in' => $ID_of_page, 
    'container' => false, 
    'items_wrap' => '%3$s' 
)); 
+1

덕분에, 이것은 여전히 ​​최고의 솔루션입니다. 그래도 여전히 내 하위 메뉴를 레이아웃하기 위해 nav 메뉴/맞춤 보행기 등을 사용하기 때문에. 답변을 받아 들여야합니다. – tsdexter

+1

다른 사람이 'wp_nav_menu'를 사용하여 * menu * 질문에 대답하게되어서 기쁩니다. 그래서'wp_list_pages'를 말하는 사람들이 지겨워서 똑같습니다. – mikevoermans

+0

이것은 ** 천재입니다! ** 메뉴에서 모든 것이 편성 된 방향과 계층 적 게시물 유형의 조합과 함께 WP 주제 전략을 이동하려고합니다. menu_order를 사용하여 이미 멋진 일을하고 메뉴 위치를 기반으로 메타를 게시했지만 누락 된 링크였습니다. 브라보. –

1

내가 작성한 페이지의 하위 네비게이션을 인쇄하려면 다음과 같이하십시오. 각 페이지에 대한 하위 탐색을 인쇄하려면 ID를받는 대신 페이지 상위를 가져옵니다. 그것보다 더 복잡하게 될 것이지만 그것은 시작입니다.

$menu = wp_get_nav_menu_items('Primary Menu'); 
$post_ID = get_the_ID(); 
echo "<ul id='sub-nav'>"; 
foreach ($menu as $item) { 
    if ($post_ID == $item->object_id) { $menu_parent = $item->ID; } 
    if (isset($menu_parent) && $item->menu_item_parent == $menu_parent) { 
     echo "<li><a href='" . $item->url . "'>". $item->title . "</a></li>"; 
    } 
} 
echo "</ul>";` 
1

맥 주스트의 대답은 중대하다,하지만 난 당신이 원하는 경우 부모 항목이 인쇄하는 것을 추가합니다, 당신은 부모, 그래서 라인 (18 개) 요구를 따라 해제 조정할 수 안 :

if($item->object_id != (int)$args->start_in) { unset($sorted_menu_items[$key]); } 
관련 문제