web-dev-qa-db-ja.com

管理投稿セクションに特定のカテゴリの投稿を表示しないようにする

いくつかの目的のために私は自動的に特定のカテゴリで投稿するプラグインを作りました。今すぐ管理投稿のセクションでは、その特定のカテゴリを持つ投稿が多すぎて他の投稿を見つけることは困難でした。

このために私は別のプラグインを書き、サードパーティのプラグインを使用せずにadminの投稿セクションにその特定のカテゴリIDまたはスラッグの投稿を表示しないようにしたいです。そしてその中の特定のカテゴリの投稿を表示するためにadminセクションにメニューを作りたいです。

私のターゲットカテゴリスラッグは 'eventscat'です。

しかし、それがどのように行われるのかわかりません。どのフックを使用する必要がありますか?

1
saeid ezzati

フロントエンドでもadminでも、 pre_get_posts アクションを使用して、すべてのクエリに影響を与えることができます。あなたのケースでは、あなたが管理者クエリだけに影響を与えることを確認するべきであり、さらにそれを絞り込むために get_current_screen を使うことさえできます。これは、通常の投稿ページでのみクエリを変更する例です。

add_action ('pre_get_posts', 'wpse311946_restrict_cats');
function wpse311946_restrict_cats ($query) {
   // retrieve the id of the category to be excluded
   $idObj = get_category_by_slug ('eventscat'); 
   $id = $idObj->term_id;
   // find current admin page
   $current_screen = get_current_screen ();
   // conditionally exclude category
   if (is_admin() && $current_screen->id == "edit-post" ) {
     $query->set ('cat', -$id);
     }
   }

あなたが作成したい他の投稿ページにこのカテゴリの投稿だけが表示されるようにするために、わずかに変更を加えた同じフィルタを使うことができます(これは別のスクリーンIDを持ちます)。

1
cjbj