删除标题,摘录或编辑时,wordpress保存空白自定义帖子

时间:2016-12-19 14:22:47

标签: wordpress custom-post-type

我注意到,每当我从自定义帖子类型中删除标题,编辑或摘录支持,并且我保存自定义帖子而不输入任何信息时,它会显示在自定义帖子类型的“所有帖子”概述中,使用(没有标题)作为标题。如果全部使用了标题,编辑和摘录支持,那么没有内容的帖子似乎被wordpress丢弃。

就其本身而言,这不是一个真正的问题。一个人不应该在没有输入任何信息的情况下保存帖子,如果它确实偶然发生,可以从管理员的帖子概述中删除(无标题)行。

但是,我创建了一个自定义帖子类型,它对某些元字段使用了额外的表单验证(preg_match)。如果这些preg_matches失败,则不保存帖子,但是当输入的数据保存在瞬态中以便显示给用户时,用户会获得一些自定义错误消息。

现在,只要用户输入一些未通过preg_match检查的信息,缺少对标题,编辑器和摘录字段的支持就会导致保存帖子。没有输入任何输入信息,因此它只是一个空白的帖子,但它在所有帖子概述的列中显示为空行。

通过添加对标题,编辑器和摘录的支持可以很容易地解决这个问题,但我不想要那些自定义帖子类型。

似乎wordpress检查是否在这些字段中输入数据,如果没有输入任何数据,它只是在保存时丢弃该帖子。但是如果字段根本不存在,则无法检查它们并且仍然存储帖子?

有什么想法摆脱这个问题吗?

这是我的意思的形象:

blank line

1 个答案:

答案 0 :(得分:0)

我在wordpress论坛上得到了答案:

wordpress-saving-blanks-custom-posts-when-removing-title-excerpt-or-editor

如果存在标题和其他字段支持,则您引用的行为会丢弃空帖子由“wp_insert_post_empty_content”过滤器管理。如果你挂钩这个过滤器,你可以做任何其他你喜欢的检查。如果您的自定义字段不在传递的post数组(第二个参数)中,则数据仍应位于$ _POST中。

由于您没有标题和其他常用支持,因此将始终将false值作为第一个参数传递。您需要做的所有回调都返回true,并且中止后保存并从wp_insert_post()调用返回一个WP_Error对象。