我需要从中“隐藏”一些旧帖子,我决定使用自定义帖子状态来隐藏它们,但以后可以使用(保持管理员更干净…)但是:)
我想有这个状态的职位搜索,但不能与其他过滤器链接像这样(“存档(2)”)不应该在此列表中。。。
所有(97)|已发布(95)|草稿(12)|存档(2)|私人(2)|垃圾(1)|
我用这些参数注册post状态。。。
\'public\' => false,
\'internal\' =>true,
\'exclude_from_search\' => false,
\'show_in_admin_all_list\' => false,
\'show_in_admin_status_list\' => true,
但是通过这些设置,菜单元素是可见的,如果我这样做
\'show_in_admin_status_list\' => false,
“存档”状态的帖子不可搜索。
我正在使用此答案的修改版本(请参阅“PostStatusExtender”)(更改了名称和帖子类型)
New post status for custom post type
有没有办法解决这个问题?
最合适的回答,由SO网友:Elex 整理而成
您可以使用筛选管理查询pre_get_posts 滤器
function wpse_306361_admin_search($query) {
if(is_admin() && $query->is_main_query() && $query->is_search()) {
$query->set(\'post_status\', array(\'publish\', \'draft\', \'what-you-want\', \'your_custom_status\'));
}
return query;
}
add_action(\'pre_get_posts\', \'wpse_306361_admin_search\', 10, 1);
它将检查查询是否在admin中,是否是主查询,是否是搜索查询。
如果只是为了post_type, 不要忘记在if 陈述
pre_get_posts 在codex上:https://codex.wordpress.org/Plugin_API/Action_Reference/pre_get_posts