After installing the excellent Scribe plugin recently on a WordPress 4.2.2 website, I clicked to edit a page and was greeted with the following message instead of the usual page layout:
PHP Warning: Creating default object from empty value in F:\PLESK\WWW\security.freshmango.com\httpdocs\wp-content\plugins\scribe\scribe.php on line 620
A bit of research indicated that this error is caused by manipulation of empty or unassigned variables. I looked at the Scribe plugin source code and found line 620 which turned out to be the emboldened line below (show in its function for context):
public static function display_analysis_meta_box($post) {
$content_analysis = self::get_content_analysis($post->ID);
$remaining_evaluations = self::get_content_analysis_evaluations_remaining(self::get_account());
$content_analysis->keywordList = self::get_content_analysis_keywords( $content_analysis );
include( SCRIBE_PLUGIN_DIR . 'views/backend/meta-boxes/content-analysis.php' );
}It appears that at this stage the variable $content_analysis is being used but isn’t defined/set (I can’t say for sure as when it comes to PHP I’m no expert!).
I solved the problem by simply editing the code within WordPress and adding a qualifying IF condition using the ‘isset’ function:
public static function display_analysis_meta_box($post) {
$content_analysis = self::get_content_analysis($post->ID);
$remaining_evaluations = self::get_content_analysis_evaluations_remaining(self::get_account());
if (!isset($content_analysis)) {
$content_analysis->keywordList = self::get_content_analysis_keywords( $content_analysis );
}
include( SCRIBE_PLUGIN_DIR . 'views/backend/meta-boxes/content-analysis.php' );
}Hopefully this will help others! For anyone looking for a good guide on WordPress plugin coding and/or development, I highly recommend ‘[easyazon_link asin=”0470916222″ locale=”US” new_window=”yes” nofollow=”default” tag=”bomc-21″ add_to_cart=”default” cloaking=”default” localization=”default” popups=”no”]Professional WordPress Plugin Development[/easyazon_link]’.

