实现wordpress短代码时,如何处理错误?扔?回报值?

时间:2014-03-21 00:38:20

标签: php wordpress wordpress-plugin

处理短代码错误的最佳方法是什么?例如:

public function handleCode($atts, $content)
{
    //Get attributes
    extract( shortcode_atts( array( "type" => "good" ), $atts ) );

    //We only accept type of "good" or "bad"
    if ( $type !== "good" && $type !== "bad" )
    {
        //Throw?

        //Return null?
    }
}

让PHP客户端/用户知道发生错误的正确方法是什么?

2 个答案:

答案 0 :(得分:2)

抛出异常是一个坏主意,短代码将用于发布内容,因此没有实用的方法来捕获它,它会产生致命的错误。这很糟糕,因为

  1. 大多数人不知道如何处理这个问题(请参阅此处有关错误或空白页面的所有问题)。管理员安装你的插件/主题会有一段时间,试图弄清楚她的网站是什么。

  2. 如果在主页上的帖子中调用短代码,则有可能有效地禁用网站的大部分内容。是否值得造成致命错误,因为您的短代码无法正常完成?

  3. 更好地“安静地”失败并且

    1. 写入php日志。使用error_log等记录日志消息,同时不向网站输出任何内容。具有不向用户显示任何丑陋错误的优点,但缺点是您的普通wordpress管理员难以解决正在发生的事情

    2. 打印错误。打印出描述性错误消息。让管理员知道发生了什么,以及错误来自何处,并避免他们带着“短代码不工作”问题来到这里。但是,这在生产代码中可能是不可接受的,因为它给用户带来了错误,并且有点难看。

    3. 您选择哪一个取决于我猜测的短代码,以及它的重要程度。如果不了解你所写的内容,我就无法给出一个快速而快速的答案,即使这样,它也会是主观的。 但严重的是不要抛出异常

      为什么不添加一个选项,以便管理员可以选择出现问题时会发生什么?

答案 1 :(得分:1)

我在这个页面上被重定向,因为我问了同样的问题并且没有找到答案。

看看接受的答案,我不太同意,但它让我弄明白该怎么做。 (我甚至不会说抛出和没有意义的例外)。

真正的问题实际上是想知道谁将成为错误消息的接收者? : 有权发布帖子或页面的作者。

所以这不是管理员,错误的代码也不会投入生产。

如果发布商在其网页/帖子中编写短代码,则会出现此错误消息。事实上,在预览时。 如果在php日志中以无提示方式记录错误,则用户可能甚至不知道它存在!他可能会认为该插件不起作用并将其删除。 我认为这不是理想的目标。

所以当然,我认为最好的解决方案是在生成的页面中打印错误。

我看到答案的日期是2014年,自https://developer.wordpress.org/plugins/the-basics/best-practices/页面以来没有记录任何内容,我认为它应该得到一些补充。