如何自动将CPT单页添加为子菜单项

时间:2016-10-26 作者:rudtek

有没有什么方法可以设置wordpress,这样当我创建一个CPT,然后有一个菜单项(最好是归档页面),它会自动创建所有实际帖子的下拉列表,并且链接到CPT的单个页面?

例如,如果我的CPT是stores,那么菜单将如下所示:

存储(到存档页)

位置1(至位置1单)

位置2(至位置2单)

位置3(至位置3单)

然后,如果我添加一个新的门店位置,将在此菜单中创建一个新链接,该链接将转到位置4(到位置单)

我的自定义帖子类型目前是由一个自定义插件创建的,因此如果可能的话,我有兴趣在其中添加代码。我看到另一个问题,说我可能必须使用wp\\u nav\\u菜单,但我不知道从哪里开始。

2 个回复
最合适的回答,由SO网友:pressword 整理而成

This should work:

add_filter( \'wp_get_nav_menu_items\', \'cpt_locations_filter\', 10, 3 );

function cpt_locations_filter( $items, $menu, $args ) {
  $child_items = array(); 
  $menu_order = count($items); 
  $parent_item_id = 0;

  foreach ( $items as $item ) {
    if ( in_array(\'locations-menu\', $item->classes) ){ //add this class to your menu item
        $parent_item_id = $item->ID;
    }
  }

  if($parent_item_id > 0){

      foreach ( get_posts( \'post_type=cpt-post-type-here&numberposts=-1\' ) as $post ) {
        $post->menu_item_parent = $parent_item_id;
        $post->post_type = \'nav_menu_item\';
        $post->object = \'custom\';
        $post->type = \'custom\';
        $post->menu_order = ++$menu_order;
        $post->title = $post->post_title;
        $post->url = get_permalink( $post->ID );
        array_push($child_items, $post);
      }

  }

  return array_merge( $items, $child_items );
}
SO网友:Rasika Wadibhasme

你试过了吗“Automatically add new-top level pages to this menu option“在菜单页面的底部。它会自动将任何帖子或页面添加到菜单中,即使是自定义的。我只是不知道如何将其添加到子菜单中。”。

相关推荐

无法将设置添加到“NAV_MENUS”定制器面板

我试图在自定义程序的“菜单”面板中添加一个复选框,但由于某些原因,它没有显示出来。如果我尝试将其从“nav\\u菜单”更改为“title\\u tagline”或“colors”,复选框会显示得很好。是什么阻止它显示在“菜单”面板上?// add custom options to the Customizer function nssra_customizer_options($wp_customize) { // add \"menu primary flex\" checkb