web-dev-qa-db-ja.com

Wp_list_tableの投稿タイプから特定の画面オプションと表の列を削除するにはどうすればいいですか?

投稿された記事の一覧が表示されているページ:example.domain.com/wp-admin/edit.php

右上隅に[画面オプション]タブがあります。これをクリックすると、メニューがスライドします。このスライドダウンメニューには、チェックボックスが含まれています。これらのチェックボックスをオンまたはオフにすると、チェックされているかどうかに応じて、投稿テーブルの特定の列が表示/非表示になります。

この投稿の種類(デフォルトの投稿の種類:post)に登録されているすべての画面オプションの一覧をプログラムで取得する方法を探しています。これらの登録済み画面オプションのリストを取得したら、特定の一連のオプションがリストされているかどうかを確認します。彼らがリストされたアイテムと一致するならば、私はそれらのオプションを取り除くことを計画します。

WordPress - Screen Options - List Posts フルサイズについてはここをクリックスクリーンショット

質問プログラムで、投稿タイプに関するすべての登録済み画面オプションのリストを取得するにはどうすればよいですか(各投稿をリストした表のあるページ)。

追加/編集の投稿タイプ から特定の画面オプションとメタボックスを削除するために提供される解決策に似た解決策を探しています。

3
Michael Ecklund

必要なのは、リスト表示中に使用される$columns変数を変更することです。これは、それぞれ'manage_posts_columns'および'manage_pages_columns'post_type='post'およびpost_type='page'フックを使用して変更できます。カスタム投稿タイプを無視したい場合は、例で示したように'manage_posts_columns'に渡される2番目のパラメータを調べてください。

それで、あなたが「コメント」スクリーンオプションを取り除きたいとしましょう、そしてそれはあなたがそれぞれ投稿とページのためにこれらのスクリーンショットで見る列:

次のクラスをあなたのテーマのfunctions.phpファイルまたはあなたが構築しようとしているプラ​​グインにドロップすると、このコードは "Comments"スクリーンオプションとそれに関連する列を削除します。答えはあなたの 他の質問 に似ています、私は"2"をクラス名に加えました、それでMichael_Ecklunds_Admin_Customizer2):

class Michael_Ecklunds_Admin_Customizer2 {
  function __construct() {
    add_action( 'manage_pages_columns', array( $this, 'manage_columns' ) );
    add_action( 'manage_posts_columns', array( $this, 'manage_columns' ), 10, 2 );
  }
  function manage_columns( $columns, $post_type = 'page' ) { //2nd param not passed for pages
    if ( in_array( $post_type, array( 'post', 'page' ) ) ) {
      // This is only for posts and pages, 'if (in_array(...))' just illustrates how.
      unset( $columns['comments'] );
    }
    return $columns;
  }
}
new Michael_Ecklunds_Admin_Customizer2();

上記のコードをWordPress 3.4サイトに追加した後の外観は次のとおりです。

PhpStorm内で Zendデバッガを使用する これが$columnsフック内の'manage_posts_columns'の検査です。 WordPress 3.4のデフォルトインストールがPost編集リストにどのような値を持つか(私の例で参照した配列インデックスに丸を付けました、すなわち$columns['comments']

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

9
MikeSchinkel