2

多数のカスタム投稿タイプとタクソノミーを追加しているので、それらをすべて管理メニューの最上位レベルに追加しないと、視覚的に明確になることがよくあります。代わりに、適切なサブメニューの下に追加したいと思います。この 2 段階のアプローチを使用して、あまり労力をかけずにそれを行いました。

  1. CPT の登録時に「show_ui」プロパティを使用して CPT を非表示にする
  2. add_submenu_page() 呼び出しを使用してそれらを追加し直します

たとえば、「会社」と呼ばれる CPT の add_submenu_page 呼び出しの例を次に示します。

add_submenu_page (LG_ADMIN_MENU,"Companies","Companies","manage_options",'edit.php?post_type=companies');

これらの 2 つの手順を実行すると、CPT を表示できるようになり、既存の属性を変更できます。レコードを削除することもできますが、レコードを追加することはできません。「新規追加」ボタンをクリックすると、「無効な投稿タイプ」としか表示されない白い画面が表示されます。

ここで、単純に通常のトップレベル メニューをオンにすると (他のすべての設定はそのままにしておきます)、メニューがサブメニュー (add_submenu_page 呼び出しから) とトップレベル メニューの両方として表示されるようになります ( 「show_ui」で元に戻り、問題なく新しいアイテムを追加できます。

4

1 に答える 1

2

これは、 の最初の行で次の/wp-admin/post-new.phpようになっているためです。

if ( !isset($_GET['post_type']) )
    $post_type = 'post';
elseif ( in_array( $_GET['post_type'], get_post_types( array('show_ui' => true ) ) ) )
    $post_type = $_GET['post_type'];
else
    wp_die( __('Invalid post type') );

'show_ui' => trueあなたはその条件を通過していません。

クリエイティブになる時間 :)

add_action( 'admin_menu', 'so_13255525_admin_menu' );

function so_13255525_admin_menu() 
{
    global $submenu;

    $submenu['index.php'][25] = $submenu['edit.php?post_type=portfolio'][5];
    $submenu['index.php'][30] = $submenu['edit.php?post_type=portfolio'][10];

    remove_menu_page( 'edit.php?post_type=portfolio' ); 
}

結果:
$submenu グローバルの操作


show_uitrue に設定されています。ニーズに合わせてこれを調整する必要があります。

これを使用して、そのグローバルを検査します。

add_action( 'admin_notices', 'so_13255525_admin_notice' );

function so_13255525_admin_notice() 
{
    if( !current_user_can( 'delete_plugins' ) )
        return;
    global $submenu;
    echo '<pre>' . print_r( $submenu, true ) . '</pre>';
}
于 2012-12-03T05:33:43.633 に答える