2012-01-07 10 views
1

私が見つけることができるのは、wp_nav_menuのWalkerプロパティを使用するソリューションです。これは適切なアプローチではないと思います。私は、次のような構造でメニューを作成したい:カテゴリに親に属する記事
カテゴリーであるサブメニュー項目のカテゴリの投稿がサブメニューアイテムとして表示されます

  • Xの数字をある

    • リンク

など...

ポストを取得するためにメニュー項目ごとにループを手動で実行する必要がありますか?

答えて

4

あなたのfunctions.phpでこれを試してみてください:

add_filter('wp_nav_menu_items', 'add_productions', 10, 2); 
function add_productions($items, $args) { 
    $cat = '28'; // define category 
    $productions = array(); 
    $productions = get_posts("cat=$cat"); 
    if ($productions[0] != '') { 
     $items .= '<li><a href="#">Productions</a><ul class="sub-menu">'; 
     foreach ($productions as $production) { 
     $permalink = get_permalink($production->ID); 
     $items .= '<li><a href="'.$permalink.'">'.$production->post_title.'</a></li>'; 
     } 
     $items .= '</ul>'; 
    } 
    return $items; 
} 
+0

は素晴らしい作品、ありがとう! –

4

この質問と回答は、私にとって非常に有用だったので、私は任意の時点でメニューを挿入するためのオプションを提供し、追加のソリューションを追加するだろうと思いました既存のコアメニュー。

ウェブ上の例のほとんどは、メニューの最後にアイテムを追加する方法を示しています。これは、メニューのどこにでも新しいメニューを追加するのに役立ちます。ここで

は私の「ホーム」メニューの後に新しいメニューを配置するためのコードです:

add_filter('wp_nav_menu_items', 'add_gallery', 10, 2); 
function add_gallery($items, $args) { 
    $cat = '1'; // define category 
    $pattern = 'Home</a></li>'; 
    $productions = array(); 
    $productions = get_posts("cat=$cat"); 
    $temp_items = ''; 
    if ($productions[0] != '') { 
     $temp_items .= '<li><a href="#">Galleries</a><ul class="sub-menu">'; 
     foreach ($productions as $production) { 
     $permalink = get_permalink($production->ID); 
     $temp_items .= '<li><a href="'.$permalink.'">'.$production->post_title.'</a></li>'; 
     } 
     $temp_items .= '</ul>'; 
    } 
    $replacement = $pattern .$temp_items; 
    $temp_menu = str_replace($pattern, $replacement, $items); 
    return $temp_menu; 
} 

うまくいけば、これは他の誰かを助け...

関連する問題