Настраиваемые Меню Типов Записей


Я пишу плагин для работы, потому что наш основной веб-сайт в конечном итоге переносится на 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 );
Author: Zack, 2011-02-03

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'); 

Надеюсь, это поможет

 6
Author: Bainternet, 2011-02-03 22:54:37

Если в конечном итоге это будет перенесено на WordPress (например, не в ближайшие несколько недель), я бы предложил подождать выхода WordPress 3.1. Это должно произойти очень скоро, и оно уже делает это. Конечно, вы могли бы пропустить ожидание и просто развиваться на магистрали. То, как вы это делаете, должно работать в 3.1 без каких-либо изменений.

 1
Author: John P Bloch, 2011-02-03 22:30:21