2017-10-06 3 views
0

管理メニューから削除するカスタム分類法メニューはintranet-postタイプで、管理メニューのintranet-categoriesにのみ表示されます。これらのカスタム分類を編集し、投稿タイプintranet-categoriesからそれらにタームを追加したいからです。私はこのようなことをしようとしました:Wordpressの私は、私はいくつかの異なるポストタイプのために使用していたカスタム分類法を行った

function remove_taxonomy_submenu_pages() { 
    $categories = get_object_taxonomies('intranet-categories'); 
    foreach($categories as $category) { 
     remove_menu_page('edit.php', 'edit-tags.php?taxonomy=' . $category . '&post_type=intranet-post'); 
    } 
} 

add_action('admin_menu', 'remove_taxonomy_submenu_pages', 20); 

しかし、これはうまくいかなかった、これを行う正しい方法は何ですか?

答えて

0

私があなたを正しく理解していれば、最も簡単な方法は、あなたがそれらを必要とする投稿タイプのみにタクソノミーを登録することです。したがって、他の投稿タイプを削除する必要があります。

register_taxonomy('company', ['intranet-categories'] 

これは、この分類法をイントラネットカテゴリのみに登録します。

希望します。

0

カスタムポストタイプに利用できるタクソノミーを制限する方法は、タクソノミを登録するときにポストタイプまたはを登録するときにどちらかの方法で登録することです。

register_post_type(
    ... 
    'taxonomies' => [ 'intranet-categories' ] 
    ... 
); 

および/または、あなたの分類を登録するときに、(登録に)定義ポストタイプ:あなたこの引数を追加し、登録この分類をしたいですかポストタイプでそう

、しかし、それはあなたが(あなたのコードに基づいて)すでにこのことを知っている可能性が表示され、あなたはまだintranet-postsに関連付けられた分類をしたい、あなたはちょうどそれが中に表示したくない

register_taxonomy('company', ['intranet-categories'], [... 

:に割り当てる必要があります管理者ですか?

だから - ダッシュボードからメニュー項目を削除するために、あなたはこのような何かをするだろう:

function remove_taxonomy_submenu_pages() { 
    global $menu; 
    // see the menu items 
    var_dump($menu); 
    // after var_dump, you can see which item you want to remove, so you can remove like so: 
    foreach ($menu as $i => $item) { 
     // assuming 'intranet-post' is the menu item (which it probably isn't, find it using the var_dump info above) 
     if ('intranet-post' == $item[2]) { 
      unset($menu[$i]); 
     } 
    } 
} 

add_action('admin_menu', 'remove_taxonomy_submenu_pages', 9999); 
関連する問題