WP-CLI plugin install causes PHP fatal error - Using $this when not in object context

wordpress.stackexchange https://wordpress.stackexchange.com/questions/377777

  •  21-04-2021
  •  | 
  •  

Question

When running sudo wp install plugin pluginname --allowroot

It causes an error:

PHP Fatal error: Uncaught Error: Using $this when not in object context in /var/www/html/wp-content/plugins/pluginname/blocks.php:89

We have a custom plugin that has this line:

 class Block{ 
    public static function Run() {           
      add_action('enqueue_block_editor_assets',array($this,'RegisterBlock')); //complains on this line

When installing via WP admin - it works fine. But when using WP-CLI it fails.

Any help will be appreciated

Was it helpful?

Solution

public static function Run() {

The "static" here means this function doesn't have an object context i.e. it's intended to be called as Block::Run() without actually making a Block. That said, $block = new Block(); $block->Run(); will still work, but it still doesn't have $this set inside the method.

Instead you can use the class name instead of $this to make a callable for a static method:

class Block{ 
    public static function Run() {           
      add_action('enqueue_block_editor_assets', array('Block', 'RegisterBlock') );

But I've no idea how the original code is working in wp-admin. Is it code definitely being called?

Licensed under: CC-BY-SA with attribution
Not affiliated with wordpress.stackexchange
scroll top