Настраиваемые Меню Типов Записей
Я пишу плагин для работы, потому что наш основной веб-сайт в конечном итоге переносится на WordPress. У меня запланировано несколько пользовательских типов сообщений для этого плагина, и я хотел бы сгруппировать их все в одном главном меню.
В принципе, Я хочу, чтобы ссылка "Посетители" была размещена в разделе "Администратор Argus". Другие ссылки добавлять не нужно, так как я могу "взломать" их везде, где захочу.
$v_args = array(
'labels' => array (
'name' => 'Visitors',
'singular_name' => 'Visitor',
'add_new_item' => 'Register New Visitor', // TODO: http://codex.wordpress.org/Function_Reference/register_post_type#Arguments
),
'public' => true,
'publicly_queryable' => false,
'exclude_from_search' => true,
'show_ui' => true,
'show_in_menu' => 'argus', // TODO: This doesn't work...
'hiearchical' => false,
'supports' => array( '' ),
'register_meta_box_cb' => array ( &$this, '_wp_visitor_meta_box_cb' ),
);
register_post_type( $post_type, $v_args );
Это моя страница меню, которую я создал:
add_menu_page( 'Argus', 'Argus Admin', 'manage_options', 'argus', array( &$this, '_wp_argus_main_panel' ), '', -1 );
2 answers
Вы все правильно поняли, но вам нужно дождаться WordPress 3.1, где он фактически реализован. если вы не можете ждать, вы можете изменить 'show_in_menu' на false и использовать функцию add_submenu_page(). Определите 'argus' как верхнюю страницу и добавьте посетителей "вручную" в меню администратора Argus.
Таким образом, ваш код будет следующим:
$v_args = array(
'labels' => array (
'name' => 'Visitors',
'singular_name' => 'Visitor',
'add_new_item' => 'Register New Visitor',
),
'public' => true,
'publicly_queryable' => false,
'exclude_from_search' => true,
'show_ui' => true,
'show_in_menu' => 'flase',
'hiearchical' => false,
'supports' => array( '' ),
'register_meta_box_cb' => array ( &$this, '_wp_visitor_meta_box_cb' ),
);
register_post_type( $post_type, $v_args );
И затем
add_menu_page( 'Argus', 'Argus Admin', 'manage_options', 'argus', array( &$this, '_wp_argus_main_panel' ), '', -1 );
add_submenu_page( argus, 'Visitors', 'Visitors', 'manage_options' , 'visitors' , 'edit.php?post_type=visitors');
Надеюсь, это поможет
Если в конечном итоге это будет перенесено на WordPress (например, не в ближайшие несколько недель), я бы предложил подождать выхода WordPress 3.1. Это должно произойти очень скоро, и оно уже делает это. Конечно, вы могли бы пропустить ожидание и просто развиваться на магистрали. То, как вы это делаете, должно работать в 3.1 без каких-либо изменений.