Adicionar post-new.php? Post_cat = catslug ao menu admin

Eu fiz possível usar o post-new.php? Post_cat = catslug no administrador do wordpress para criar uma nova postagem com uma categoria pré-preenchida usando a resposta aqui: Como adicionar categoria a: ‘wp-admin / post-new .php ‘?

Agora eu quero criar vários itens de menu com este formato no item de menu “Posts” -> “Adicionar novo”. Então, o menu será:

POSTAGENS

  • Todas as publicações
  • Adicionar novo
  • Adicionar novo perfil -> post-new.php? Post_cat = perfil
  • Adicione novas novidades -> post-new.php? Post_cat = notícias
  • Adicionar novo passo -> post-new.php? Post_cat = pitch
  • Categorias
  • etc.

Eu consegui adicionar um item na parte inferior do menu com este código em functions.php

add_action( 'admin_menu' , 'admin_menu_new_items' ); function admin_menu_new_items() { global $submenu; $submenu['edit.php'][500] = array( 'Add new profile', 'manage_options' , '/wp-admin/post-new.php?post_cat=pitches' ); } 

Questões:

  1. Essa é a melhor maneira de fazer isso? Ou eu preciso usar uma das funções descritas aqui http://codex.wordpress.org/Administration_Menus . Eu tentei alguns, mas não consegui-lo funcionar do jeito que eu quero.
  2. Se o código acima é o melhor caminho a seguir, como adiciono mais itens?
  3. Como adiciono o item de menu abaixo “Adicionar novo” (em vez de “tags” abaixo)

Solutions Collecting From Web of "Adicionar post-new.php? Post_cat = catslug ao menu admin"

Para ver as teclas de matriz atuais, tente isso:

 add_action( 'admin_menu' , 'admin_menu_new_items', 1 ); function admin_menu_new_items() { global $submenu; wp_die( '
' . var_export( $submenu['edit.php'], true ) . '

' ); }

Eu entendi isso:

 array ( 5 => array ( 0 => 'All Posts', 1 => 'edit_posts', 2 => 'edit.php', ), 10 => array ( 0 => 'Add New', 1 => 'edit_posts', 2 => 'post-new.php', ), 15 => array ( 0 => 'Categories', 1 => 'manage_categories', 2 => 'edit-tags.php?taxonomy=category', ), 16 => array ( 0 => 'Tags', 1 => 'manage_categories', 2 => 'edit-tags.php?taxonomy=post_tag', ), ) 

O índice ’10’ é o item Adicionar novo. Para adicionar os novos itens do submenu, use os índices 11, 12 e 13:

  $submenu['edit.php'][11] = array( 'Add New Profile', 'manage_options' , '/wp-admin/post-new.php?post_cat=pitches' ); $submenu['edit.php'][12] = array( 'Add New News', 'manage_options' , '/wp-admin/post-new.php?post_cat=news' ); $submenu['edit.php'][13] = array( 'Add New Pitch', 'manage_options' , '/wp-admin/post-new.php?post_cat=pitch' ); 

Quando o WordPress adiciona os itens do submenu ao painel, trata o $submenu como uma matriz associativa. Todos os itens adicionados à matriz edit.php serão adicionados ao final da matriz independentemente da chave usada. Use ksort () para pedir as chaves.

  ksort( $submenu['edit.php'], SORT_NUMERIC ); 

Colocando tudo junto:

 add_action( 'admin_menu' , 'admin_menu_new_items', 1 ); function admin_menu_new_items() { global $submenu; $submenu['edit.php'][11] = array( 'Add New Profile', 'manage_options' , '/wp-admin/post-new.php?post_cat=pitches' ); $submenu['edit.php'][12] = array( 'Add New News', 'manage_options' , '/wp-admin/post-new.php?post_cat=news' ); $submenu['edit.php'][13] = array( 'Add New Pitch', 'manage_options' , '/wp-admin/post-new.php?post_cat=pitch' ); // WordPress treats $submenu as an associative array and does not sort it first. // We have to sort keys into the order we want them to show up. ksort( $submenu['edit.php'], SORT_NUMERIC ); }