【问题标题】:Wordpress how to check if a custom post type title is unique before save/update?Wordpress 如何在保存/更新之前检查自定义帖子类型标题是否唯一?
【发布时间】:2014-02-19 13:14:56
【问题描述】:

我是 Wordpress 的新手。我在插件中创建了一个自定义帖子类型,并尝试为其添加自定义验证。

在保存这种类型的新帖子(在管理员中)之前,我想检查提交的帖子标题是否已经存在。所以我认为它可能是这样的:

  • 用户填写表单并提交;
  • 保存之前(在一个钩子中),提交的标题在数据库中搜索相同的标题和相同的帖子类型;
  • 如果找到某个条目,则阻止保存帖子,定义错误消息并将浏览器重定向到帖子表单,并预先填写提交的数据。并向用户显示错误消息。
  • 如果没有找到条目,则不中断流,正常保存帖子。

这个逻辑正确吗?如果没有,应该怎么做?

由于我是 Wordpress 的新手,我没有使用 OOP 方法,至少现在还没有。

谢谢!

【问题讨论】:

  • 到目前为止您尝试过什么?显示您的代码。
  • Rahil,我只是用谷歌搜索了一下,但一无所获。由于我不知道正确的逻辑,我什至什么都没有编码。
  • 您要求的是一段非常精细的代码。尝试检查此链接,然后使用您编写的一些代码编辑您的评论,以便获得更高质量的答案。 wordpress.stackexchange.com/questions/42013/…

标签: php wordpress validation custom-post-type custom-wordpress-pages


【解决方案1】:

嗯,看来我提出的逻辑是无效的。

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

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

因此,再次重申,使用 JavaScript 进行验证似乎是最好的选择 - 至少在这种情况下,它不包含文件上传等更复杂的字段。

感谢您的帮助!

编辑: Duplicate Title Checker 插件提供了如何使用 JS 来实现它的想法。

【讨论】:

    【解决方案2】:

    我使用 Duplicate Title checker 并在 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} ";
    

    似乎可以解决问题。

    【讨论】:

      猜你喜欢
      • 2023-03-20
      • 2018-09-11
      • 2011-11-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多