如何自定义wordpress“评论错误”页面

时间:2009-01-27 05:12:11

标签: wordpress

如果您在评论表单中输入了错误的信息(缺少姓名,电子邮件等),wordpress将返回一个空白页面,其中包含相关的错误消息。我用Google搜索,但无法找到自定义此响应的方法。

有谁知道怎么做?

4 个答案:

答案 0 :(得分:2)

对于这个特殊问题,我最终直接修改了\ wp-comments-post.php - 主题引擎不允许你自定义它。

我所做的简短描述是绕过“wp_die()”的使用,而是在博客评论帖未验证的情况下让脚本执行“my_wp_die()”。

这是一个连续的例子:

1)用户登陆文章页面(在主题中调用single.php)
2)用户在评论字段中输入一些信息(可能会也可能不会验证)
3)将文章的URL作为参数形成帖子到“wp-comments-post.php”,这样它就可以将验证结果传递给具有适当视觉效果的页面(侧栏:我无法挂钩外部模板)我编写的库集成到主题中,而不是将我的网站模板复制到主题中)和用户表单字段。
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将显示错误/成功消息和新评论。

答案 1 :(得分:1)

我无法找到任何关于自定义错误页面的简单方法但是快速浏览wp-comments-post.php会告诉我,当它遇到错误时会执行函数wp_die(可怕的文档)生成错误页面。它似乎需要一些控制错误页面输出的参数,但无法找到有关这些选项的详细信息。通过稍微调整一下wp_die,你应该可以让它显示你自己的自定义错误页面。不确定这是否会有所帮助,但这是一个开始的地方。

答案 2 :(得分:0)

在相关说明中,请确保验证您的错误页面在Internet Explorer中是否正确显示。我只是提到这一点,因为我最近遇到了这个问题,不幸的是花了几个小时搞清楚了。

简而言之,WordPress生成的通用错误页面(例如,在“用户注释”验证失败后)将以HTTP状态代码“500 Internal Server Error”发送到浏览器。奇怪的是,Internet Explorer(版本7之前)将忽略使用“500”发送的错误页面(如果页面数量小于512字节),显示通用Microsoft“此页面无法显示”错误消息

WordPress的人知道这个错误并编写了wp_die()函数,以确保错误页面大于512字节。不幸的是,他们忽略了使用gzip压缩的网络服务器(即,在通过网络发送之前缩小网页)以获得性能。 如果Web服务器使用gzip压缩,Internet Explorer 5/6将不会显示通用WordPress(v2.7及更早版本)错误页面。

如果对遇到此问题的其他人有任何帮助,我会写一篇博文,更详细地描述问题(包括截图),包括我打开的WordPress错误的链接以及临时工作的说明 - 在错误被正确修复之前,可以使用它。有关详细信息,请参阅http://www.clintharris.net/2009/ie-512-byte-error-pages-and-wordpress/

答案 3 :(得分:0)

我自己一直在为此感到困惑,据我所知,WP的最新版本似乎没有任何进一步的改进。

但是,我的解决方案是在Javascript中进行一些客户端表单验证。只需将一个事件处理程序附加到提交按钮(例如,使用submit.onclick),然后将其链接到您的JS验证函数,以检查数据并在失败时提供反馈(如违规表单字段周围的红色边框)。

如果数据验证失败,请记住使用preventDefault,以便不提交表单!

当然,如果未启用Javascript,表单仍会提交,在这种情况下,用户仍会看到默认的WP错误页面。为了解决这个问题,你可以像前面讨论的那样寻求一个PHP选项,但我认为这更有用。