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

编辑页面上执行的短代码导致Wordpress错误,wordpress,wordpress-shortcode,Wordpress,Wordpress Shortcode,我正在写一个wordpress插件 我在调试日志中注意到,抛出了很多PHP错误,因为我的短代码正在管理编辑页面上执行,因此相关数据不可用,因为短代码正在加载基于用户前端的动态数据。例如,我有一个函数: function myFunction_availability() { if (is_admin()) return; // tried adding this but still get the issue $product = $this->myFunction_g

我正在写一个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>";
}
正如您从我的代码中看到的,我尝试添加
is_admin()
,以便在查看管理员页面(即编辑帖子页面)时退出函数,但这似乎不起作用

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


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

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

如果使用woocommerce,您可以尝试:

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

在您的情况下,您应该编辑
myFunction\u get\u current\u product()
方法,并在那里验证产品是否存在。

您的问题缺乏详细信息。。然而。。。product没有定义,所以如果product为null,您的函数应该退出。您好,感谢您确认这一点,在更高的级别上,我想知道为什么wordpress在加载管理编辑页面时运行短代码,而不是其他管理页面。我想答案是这是设计的,不是可以改变的?也许短代码的最佳实践是通过一个只在前面加载的钩子加载短代码?我未能在文件中找到任何明确的答案。。非常感谢
$product = wc_get_product( get_the_ID() );
if($product){
  //continue
}