Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Wordpress-如何在保存/更新之前检查自定义帖子类型标题是否唯一?_Php_Validation_Wordpress_Custom Post Type - Fatal编程技术网

Php Wordpress-如何在保存/更新之前检查自定义帖子类型标题是否唯一?

Php Wordpress-如何在保存/更新之前检查自定义帖子类型标题是否唯一?,php,validation,wordpress,custom-post-type,Php,Validation,Wordpress,Custom Post Type,我是Wordpress的新手。我在一个插件中创建了一个自定义帖子类型,我正在尝试向它添加一个自定义验证。 在保存这种类型的新帖子之前(在admin中),我想检查提交的帖子标题是否已经存在。这就是我所想的: 用户填写表格并提交 保存之前(在钩子中),提交的标题在数据库中搜索相同的标题和相同的文章类型 如果找到某个条目,将阻止保存帖子,并定义一条错误消息,浏览器将重定向到帖子表单,并预先填充提交的数据。并向用户显示错误消息 如果未找到条目,则流程不会中断,post正常保存 这个逻辑正确吗?若否,

我是Wordpress的新手。我在一个插件中创建了一个自定义帖子类型,我正在尝试向它添加一个自定义验证。 在保存这种类型的新帖子之前(在admin中),我想检查提交的帖子标题是否已经存在。这就是我所想的:

  • 用户填写表格并提交
  • 保存之前(在钩子中),提交的标题在数据库中搜索相同的标题和相同的文章类型
  • 如果找到某个条目,将阻止保存帖子,并定义一条错误消息,浏览器将重定向到帖子表单,并预先填充提交的数据。并向用户显示错误消息
  • 如果未找到条目,则流程不会中断,post正常保存
这个逻辑正确吗?若否,应如何处理? 由于我是Wordpress的新手,我没有使用OOP方法,至少现在还没有


谢谢

看来我提出的逻辑是无效的

此外,防止保存帖子的唯一方法似乎是使用JavaScript验证表单

我能找到的更接近的答案是。但是,如果用户快速编辑帖子,则不包括验证

因此,再次强调,使用JavaScript进行验证似乎是最好的选择——至少在本例中,它不包含像文件上载这样更复杂的字段

谢谢你的帮助

编辑: 该插件提供了一个如何使用JS的想法。

我使用了,在duplicate-title-checker.php中,我将第34行从

$sim_titles = "SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_type = 'post' AND post_title = '{$title}' AND ID != {$post_id} ";


似乎成功了。

到目前为止你都尝试了什么?显示你的代码。拉希尔,我只是在谷歌上搜索了一下,但什么也没找到。由于我不知道正确的逻辑,我甚至还没有编写任何代码。您要求的是一段非常复杂的代码。尝试检查此链接,然后用您编写的一些代码编辑您的评论,以便获得更高质量的答案。
$sim_titles = "SELECT post_title FROM $wpdb->posts WHERE post_status = 'publish' AND post_title = '{$title}' AND ID != {$post_id} ";