functions - 'Attempt to modify property of non-object' warning

admin2025-06-06  2

** This question is outdated! **

I use the bellow function to disable a plugin update. It works, because I use an old version of this plugin and it does not show me that a newer version exists, but, however, I get a warning on line 2: Attempt to modify property of non-object. How to fix this?

function my_filter_plugin_updates( $value ) {
   unset( $value->response['duplicator/duplicator.php'] ); //Duplicator
   return $value;
}

add_filter( 'site_transient_update_plugins', 'my_filter_plugin_updates' );


UPDATE

I am not a PHP coder, so I do not know if what I did is correct, but this works - no errors, no warnings, no plugin update:

// Disable plugin update
function my_filter_plugin_updates() {
   $value = new StdClass;
   unset( $value->response['duplicator/duplicator.php'] ); //Duplicator
   return $value;
}

add_filter( 'site_transient_update_plugins', 'my_filter_plugin_updates' );

** This question is outdated! **

I use the bellow function to disable a plugin update. It works, because I use an old version of this plugin and it does not show me that a newer version exists, but, however, I get a warning on line 2: Attempt to modify property of non-object. How to fix this?

function my_filter_plugin_updates( $value ) {
   unset( $value->response['duplicator/duplicator.php'] ); //Duplicator
   return $value;
}

add_filter( 'site_transient_update_plugins', 'my_filter_plugin_updates' );


UPDATE

I am not a PHP coder, so I do not know if what I did is correct, but this works - no errors, no warnings, no plugin update:

// Disable plugin update
function my_filter_plugin_updates() {
   $value = new StdClass;
   unset( $value->response['duplicator/duplicator.php'] ); //Duplicator
   return $value;
}

add_filter( 'site_transient_update_plugins', 'my_filter_plugin_updates' );
Share Improve this question edited Nov 23, 2018 at 16:55 Iurie asked Jun 26, 2014 at 20:19 IurieIurie 1,1314 gold badges25 silver badges46 bronze badges 3
  • 1 I'm not sure you can. The code you have looks to be taken from wordpress.stackexchange/questions/25358/… - and had the same problem there. There are also other solutions on that post. – vancoder Commented Jun 26, 2014 at 20:35
  • @vancoder Thank you! You are right, but I like this solution and I hope it can be improved. – Iurie Commented Jun 27, 2014 at 5:50
  • 1 It looks like you're disabling all plugin updates this way, since $value is always a new empty object? – birgire Commented Jun 27, 2014 at 12:14
Add a comment  | 

2 Answers 2

Reset to default 7

Some simple php, check if it's set before trying to unset it.

function my_filter_plugin_updates( $value ) {
   if( isset( $value->response['duplicator/duplicator.php'] ) )
       unset( $value->response['duplicator/duplicator.php'] ); //Duplicator

   return $value;
}
add_filter( 'site_transient_update_plugins', 'my_filter_plugin_updates' );

This could be late but assigning a new instance of an object, you are overwritten the proper value of $value

转载请注明原文地址:http://conceptsofalgorithm.com/Algorithm/1749155863a316840.html

最新回复(0)