您可以使用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)。