REGISTER_POST_STATUS不可见但可搜索

时间:2018-06-18 作者:Leif S.

我需要从中“隐藏”一些旧帖子,我决定使用自定义帖子状态来隐藏它们,但以后可以使用(保持管理员更干净…)但是:)

我想有这个状态的职位搜索,但不能与其他过滤器链接像这样(“存档(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

有没有办法解决这个问题?

1 个回复
最合适的回答,由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

结束

相关推荐

插件放置在/wp-content/plugins内的文件夹中时不保存值

我得到了WordPRess插件的以下代码,它在每个页面/后期编辑屏幕上添加了两个自定义输入。然后将这些值保存并输出到前端页面的标题中。如果代码位于内部,则可以正常工作。php文件并直接放入“wp内容/插件”。然而,如果我把它放在插件(如“wp-content/plugins/myplugin”)中自己的文件夹中,那么在通过编辑屏幕保存帖子/页面时,输入字段不会保存。此外,它不会向前端页面html标题部分输出任何内容。这似乎是一个被放弃的项目,所以我无法与原始开发人员一起制定解决方案。然而,代码中的某些内容