如果您在评论表单中输入了不正确的信息(缺少姓名、电子邮件等),wordpress 会返回一个带有相关错误消息的空白页面。我用谷歌搜索,但找不到自定义此响应的方法。
有谁知道该怎么做?
如果您在评论表单中输入了不正确的信息(缺少姓名、电子邮件等),wordpress 会返回一个带有相关错误消息的空白页面。我用谷歌搜索,但找不到自定义此响应的方法。
有谁知道该怎么做?
对于这个特殊问题,我最终直接修改了 \wp-comments-post.php - 主题引擎不允许您自定义它。
我所做的简短描述是绕过“wp_die()”的使用,而是让脚本在博客评论帖子未验证的情况下执行“my_wp_die()”。
这是一个顺序示例:
1)用户登陆文章页面(在您的主题中调用 single.php)
2)用户在评论字段中输入一些信息(可能会或可能不会验证)
3)使用文章的表单帖子到“wp-comments-post.php” URL 作为参数,因此它可以将验证结果传递回具有适当视觉效果的页面(侧边栏:我无法挂钩我编写的外部模板库,该模板库已集成到主题中,而不是将我的网站模板复制到主题)和用户表单字段。
4) wp-comments-post.php 将my_wp_die()
在未验证时调用(包括来自 /comment.php:function 的重复检查wp_allow_comment()
),或者my_wp_success()
如果评论有效并被发布。
5) wp-comments-post.php 会将用户转发回文章 URL(源自永久链接)。
6) 主题中的 single.php 将显示错误/成功消息和新评论。
我无法找到任何关于简单地自定义错误页面的内容,但是快速浏览 wp-comments-post.php 告诉我,当它遇到错误时,它会执行生成错误页面的函数wp_die 。似乎需要一些参数来控制错误页面的输出,但找不到有关这些选项可能是什么的任何详细信息。通过对 wp_die 稍加调整,您应该能够让它显示您自己的自定义错误页面。不确定这是否会有所帮助,但这是一个开始的地方。
在相关说明中,请确保验证您的错误页面在 Internet Explorer 中正确显示。我只提到这一点是因为我最近遇到了这个问题,不幸的是花了几个小时来解决这个问题。
简而言之,WordPress 生成的一般错误页面(例如,在“用户评论”验证失败后)被发送到带有 HTTP 状态代码“500 Internal Server Error”的浏览器。奇怪的是,如果页面小于 512 字节,Internet Explorer(版本 7 之前)将忽略以“500”发送的错误页面,而是显示通用的 Microsoft“无法显示此页面”错误消息。
WordPress 人知道这个错误并编写了 wp_die() 函数,以确保错误页面大于 512 字节。不幸的是,他们忽略了考虑使用 gzip 压缩(即在通过网络发送网页之前缩小网页)的 Web 服务器的性能。如果 Web 服务器使用 gzip 压缩,Internet Explorer 5/6 将不会显示通用 WordPress(v2.7 和更早版本)错误页面。
如果对遇到此问题的其他人有任何帮助,我已经写了一篇博客文章,更详细地描述了这个问题(包括屏幕截图),包括我打开的 WordPress 错误的链接以及临时解决方法的说明,可以在正确修复错误之前一直使用。有关更多信息,请参阅http://www.clintharris.net/2009/ie-512-byte-error-pages-and-wordpress/。
我自己一直对此感到困惑,据我所知,最新版本的 WP 似乎没有任何进一步的增强。
但是,我的解决方案是在 Javascript 中进行一些客户端表单验证。只需将事件处理程序附加到提交按钮(例如,使用 submit.onclick),然后将其链接到您的 JS 验证函数以检查数据并在失败时提供反馈(如违规表单字段周围的红色边框)。
如果数据验证失败,请记住使用 preventDefault 以便表单不会被提交!
当然,如果没有启用 Javascript,表单仍然会提交,在这种情况下,用户仍然会看到默认的 WP 错误页面。要解决这个问题,您可以使用前面讨论的 PHP 选项,但我认为这是更多的工作。