web-dev-qa-db-ja.com

主要ブログ以外のすべてのサイトでデフォルトの投稿タイプを削除します。 WPMU

私はすべてのマルチサイトブログからデフォルトの投稿タイプ(ページ、投稿、コメント、リンクなど)を削除できるようにするための解決策を考え出しています。それは完全に機能し続けるでしょう。私の目的は、デフォルトを置き換えるためにすべてのマルチサイトブログにカスタム投稿タイプを適用することです。

正しい方向へのどんな助けでも大いに感謝されるでしょう。

- フィリップ

2
krazymatty

私はMultisiteをあまり使用しませんが、私はこのような何かがうまくいくかもしれないと信じています:

私が間違えていないのであれば、global $blog_id;を使ってさまざまな「ブログ」IDにアクセスできます。次に、「メインブログ」のIDは1になります。

したがって、IDが1ではないすべてのブログから投稿タイプメニューを削除すると、次のようになります。

<?php 

function remove_menus() {    

    global $blog_id, $menu;

    if( $blog_id != '1' ) {

        $restricted = array(__('Dashboard'), __('Posts'), __('Media'), __('Links'), __('Pages'), __('Appearance'), __('Tools'), __('Users'), __('Settings'), __('Comments'), __('Plugins'));

        end ($menu);    

        while (prev($menu)){
    $value = explode(' ',$menu[key($menu)][0]);
    if(in_array($value[0] != NULL?$value[0]:"" , $restricted)){unset($menu[key($menu)]);}
    }

    }
} 
?>

add_action('admin_menu', 'remove_menus');

これは、メニューの削除機能を手に入れた場所です。

http://www.wprecipes.com/how-to-remove-menus-in-wordpress-dashboard

注:これはテストされていません。単なる理論です。 。私はマルチサイトを頻繁には使用せず、現時点でこれを試すように設定したものもありません。

0
Jason Bahl

WP 3.1.0以降、 remove_menu_page を使用できます。例:

  add_action('admin_menu', function() {
    if (!is_main_site()) return;
    remove_menu_page('edit.php?post_type=post');
    remove_menu_page('edit.php?post_type=page');
  });
0
Florian