特定の画面オプションとメタボックスを投稿タイプの追加/編集から削除する方法は?


10

これで、目的の投稿タイプ内で特定の投稿を追加または編集するときに、画面オプションも増えました。ただし、これらの画面オプションはメタボックスを表示/非表示にします。メタボックスのこれらの登録されたすべての画面オプションのリストをプログラムで取得できるようにしたいので、画面オプションの特定の配列が存在するかどうかを再度確認できます。存在する場合は、プログラムでそれらを削除する予定です。

WordPress-画面オプション-投稿の追加または編集-メタボックス フルサイズのスクリーンショットはこちらをクリックしてください

質問 希望の投稿タイプ内の特定の投稿を追加または編集したい投稿タイプに登録されているすべての画面オプション(メタボックス)のリストをプログラムで取得するにはどうすればよいですか。

最終的に、ここでの目標はこれらのオプションを削除することであり、単に無効にするだけではありません。不要なダッシュボードメタボックス削除するために、私が達成したことに沿って何かをしたいと考えています。

回答:


13

必要なのは、$wp_meta_boxesによってグローバルにインデックス化されていget_current_screen()->idます。画面オプションを削除すると、'in_admin_header'フックを使用して画面オプションが表示される直前に実行できるメタボックスも削除されます。

したがって、このスクリーンショットに表示されている「トラックバックの送信」画面オプションを削除したいとします。

次のクラスをテーマのfunctions.phpファイルまたはビルドしているプラ​​グインにドロップすると、コードによって「トラックバックの送信」画面オプションが削除されます(それに関連するメタボックスも必要ですが、これは正しいですか?)。

class Michael_Ecklunds_Admin_Customizer {
  function __construct() {
    add_action( 'in_admin_header', array( $this, 'in_admin_header' ) );
  }
  function in_admin_header() {
    global $wp_meta_boxes;
    unset( $wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv'] );
  }
}
new Michael_Ecklunds_Admin_Customizer();

上記のコードをWordPress 3.4サイトに追加すると、次のようになります。

ここでPhpStorm内でZendデバッガーを使用すると$wp_meta_boxes[get_current_screen()->id]、WordPress 3.4のデフォルトのインストールでどのような値がポスト編集画面に表示されるかを確認できます(例で参照した配列インデックスを丸で囲んでいます$wp_meta_boxes[get_current_screen()->id]['normal']['core']['trackbacksdiv']

うまくいけば、これはあなたが探していたものですか?


3
ただ素晴らしい!おめでとう、エクルンド、あなたは標準的な答えだけでなく伝説的な答えも受け取りました...
ブラソフィロ

@brasofilo褒めてくれてありがとう。光栄です。
MikeSchinkel

@MikeSchinkelこれは投稿の追加/編集で機能し、ありがとうございましたが、すべての投稿のリストを含むwp_list_tableがあるページの画面オプションメタボックスをどのように削除しますか?スクリーンショット#1を参照してください。
Michael Ecklund

@MichaelEcklundこんにちは、疲れすぎて質問を完全に理解できないときは、質問に答えるべきではないと思います。未回答の質問への回答は、実際には私が回答した質問とは大きく異なるため、実際には2つの異なる質問です。この質問を編集して私が答えた質問をし、次に私がしなかったことを尋ねる質問を追加することについてどう思いますか?それができて、コメントへのリンクをここに投稿できるので、それを見つけることができる場合は、その質問に対する同等の詳細の回答も投稿します。そうしないと、両方に対して1つの首尾一貫した答えを書くことが複雑になる場合があります。
MikeSchinkel 2012年

1
@MichaelEcklundクール、ありがとう。回答済み:wordpress.stackexchange.com/a/56896/89
MikeSchinkel

0

申し訳ありませんが、少しサイドトラックですが、ボックスメタボックスからwpを削除する場合に役立ちますが、カスタムまたはカスタムテーマに関連するメタボックスにはそれほど役立ちません。もう少し説明すると、画面オプションに表示される投稿/ページを新しく作成するたびにカスタムメタボックスを導入する新しいテーマをインストールしました。(私はwpを初めて使います)何らかの理由でMikeのアプローチを使用して、このカスタムメタボックスを削除することはできませんでしたが、非カスタムのすべてで機能しました。私の愚かさのために何時間も壁にぶつかり続けたので、まだ理解できなかったので、これに戻る必要がありました。

if (is_admin()) :
function my_remove_meta_boxes() 
{
  if(!current_user_can('administrator')) 
  {
    remove_meta_box('theme_custom_meta_box', 'post', 'side');
  }
}
add_action( 'add_meta_boxes', 'my_remove_meta_boxes' );
endif;
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.