Gutenberg运行代码仅在前端短码内可用

时间:2019-11-30 作者:adelval

在古腾堡之前的网站中,我有一个大致如下结构的短代码:

function generate_new_member_form() {
    ob_start(); ?>
   // a form
   // to generate this form there is some code that uses objects or functions 
   // only available in the front end
  <?php return ob_get_clean();
} 

add_shortcode(\'new-member-form\', \'generate_new_member_form\');
不管它值多少钱,代码都与Woocommerce签出字段有关,当我试图编辑一个有短代码的页面时,会出现致命错误[new_member_form] 例如“调用null上的成员函数get()”。但我认为问题与Woocommerce无关

有没有办法阻止Gutenberg尝试在后端运行这些代码?我想能够编辑该页面,只需[new_member_form] 不尝试显示短代码。

1 个回复
SO网友:rajesh singh

这样使用,这个定义的(\'REST\\U请求\')将帮助您禁用在后端gutenberg块编辑器上运行

function generate_new_member_form() {
if(defined(\'REST_REQUEST\')) return;
    ob_start(); ?>
   // a form
   // to generate this form there is some code that uses objects or functions 
   // only available in the front end
  <?php return ob_get_clean();
} 

add_shortcode(\'new-member-form\', \'generate_new_member_form\');

相关推荐

如何从派生的进程中使用STRING_SHORTCODES()?

我有一个插件,它生成一个进程来执行打印功能。要打印的项目(在本例中为Woocommerce产品)通过URL传递(通过product_id). 在进行打印之前,必须从产品描述中删除所有注册的短代码。如果我打电话strip_shortcodes() 它什么都不做。我猜注册的短代码数组超出了范围?是否有人能提出一种有效的方法,使流程能够使用strip_shortcodes()?