WP-CLI插件安装导致PHP致命错误-在不在对象上下文中时使用$This

时间:2020-11-06 作者:Michael Soriano

运行时sudo wp install plugin pluginname --allowroot

它会导致错误:

PHP致命错误:未捕获错误:在/var/www/html/wp-content/plugins/pluginname/blocks中不在对象上下文中时使用$this。菲律宾比索:89

我们有一个自定义插件,其中包含以下内容:

 class Block{ 
    public static function Run() {           
      add_action(\'enqueue_block_editor_assets\',array($this,\'RegisterBlock\')); //complains on this line
通过WP admin安装时-工作正常。但使用WP-CLI时会失败。

任何帮助都将不胜感激

1 个回复
最合适的回答,由SO网友:Rup 整理而成

public static function Run() {
这个"static" 这里的意思是该函数没有对象上下文,也就是说,它打算被称为Block::Run() 而不是真的做块。也就是说,$block = new Block(); $block->Run(); 仍然有效,但方法中仍然没有$this集。

相反,您可以使用类名而不是$this来生成callable 对于静态方法:

class Block{ 
    public static function Run() {           
      add_action(\'enqueue_block_editor_assets\', array(\'Block\', \'RegisterBlock\') );
但我不知道原始代码在wp admin中是如何工作的。这是肯定被调用的代码吗?

相关推荐

从wp-cli保存(相同)固定链接

我将许多WordPress站点移到了一个新服务器上,所有永久链接都需要“刷新”。我需要再次保存(无任何更改)设置->永久链接以解决页面/帖子404错误。我询问是否存在从wp cli保存永久链接(无更改)的方法。我知道:wp rewrite structure但是永久链接的结构必须作为参数传递,每个站点都有不同的结构,我只需要使用相同的设置保存即可。有可能吗?