类别帖子作为子菜单项

时间:2012-01-07 11:52:29

标签: wordpress submenu

在这个主题上搜索了一段时间没有任何成功。我能找到的所有解决方案都涉及使用wp_nav_menu的Walker属性,我不认为这是正确的方法。我想创建一个具有以下结构的菜单:

  • 属于类别的链接

    • 属于父母的帖子的X个子菜单项目 类

等等......

我是否需要为每个菜单项手动运行循环以检索帖子?

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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;
}

希望这有助于其他人...