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


When implementing a wordpress shortcode, how to handle errors? Throw? Return value?

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

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客户端/用户知道发生错误的正确方法是什么?

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

  1. 大多数人不知道如何处理这种情况(参见这里关于错误或空白页的所有问题)。管理员安装你的插件/主题将有一个糟糕的时间试图找出什么只是砖她的网站。

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

最好是"安静地"失败,或者

  1. 写入php日志。使用error_log etc记录日志消息,但不向站点输出任何内容。它的优点是不会向用户显示任何丑陋的错误,但缺点是一般的wordpress管理员很难知道发生了什么

  2. 打印错误。打印描述性错误信息。给管理员一些正在发生的事情,以及错误来自哪里的想法,并避免他们来到这里与"短代码不工作"的问题。然而,这在产品代码中可能是不可接受的,因为它向用户呈现错误,并且有点难看。

你选择哪一个取决于我猜短代码是什么,以及它有多重要。在不了解你写的东西之前,我无法给出一个明确而快速的答案,即使这样也会很主观。但是千万不要抛出异常

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

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

看着公认的答案,我不太同意,但它让我知道该怎么做。(我甚至不谈论抛出和异常,这是没有意义的)。

真正的问题实际上是想知道谁将是错误消息的接收者?:有权发表文章或页面的作者。

所以错误的代码不会出现在生产环境中。

当发布者在他的页面/文章中使用错误的短代码时,应该出现此错误消息。实际上,在预览时。如果错误被静默地记录在php日志中,用户甚至可能不知道它的存在!他可能会得出结论,插件不起作用,并将其删除。我认为这不是理想的目标。

因此,我认为最好的解决办法是在生成的页面上打印错误。

我看到答案是2014年的,在https://developer.wordpress.org/plugins/the-basics/best-practices/页面上没有任何记录,我认为它应该得到一点补充。