在编辑页面上执行的短代码导致的 Wordpress 错误

Wordpress errors from shortcodes being executed on edit page

我正在写一个 wordpress 插件。

我注意到我的调试日志中出现了很多 PHP 错误,因为我的短代码正在管理编辑页面上执行,因此相关数据不可用,因为短代码正在动态加载基于用户前端的数据。例如我有一个函数:

function myFunction_availability() {
    if (is_admin()) return;   // tried adding this but still get the issue
    $product = $this->myFunction_get_current_product();
    return "<div class='product-availability'>{$product->availability}</div>";
}

在前端工作正常,但每当我从管理区域加载编辑页面时,我都会在日志中看到:

PHP Warning:  Attempt to read property "availability" on null in /home/vagrant/yodahwp/wp-content/plugins/yodah/class.yodah.php on line 1602

正如您从我的代码中看到的那样,我尝试添加 is_admin() 以在查看管理页面(即编辑 post 页面)时退出该功能,但这似乎不起作用.

有没有 wordpress 高手对此有答案?我有点惊讶在管理编辑页面上执行简码,还是我遗漏了什么?!

谢谢

这是一个老问题。通常,在使用可视化构建器时会发生这种情况。

一种解决方案是编写一个条件来检查产品是否存在。

如果使用 woocommerce 你可以试试:

$product = wc_get_product( get_the_ID() );
if($product){
  //continue
}

在您的情况下,您应该编辑 myFunction_get_current_product() 方法并在那里验证产品是否存在。