Support » Plugin: Search Everything » SOLUTION: Resolve the 500 server error when publishing new posts

  • For those still using this plugin, you’ve probably seen a HTTP 500 error when publishing a new post. The post publishes just fine, but for some reason, WordPress issues an error rather than redirecting you back to the post editor the way it’s supposed to do.

    This is due to a bug in an event that fires the first time a post is published.

    Normally I would advise against editing a plugin, but since the developer has discontinued support, it may not be a bad idea in this particular case.

    If you look on Line 927 of the main PHP file for the plugin, you’ll see something similar to the following:

    
        $response = json_decode($zemanta_response['body']);
        if (isset($response->status) !is_wp_error($zemanta_response)) {
            $status = $response->status;
        }
    

    That $zemata_response['body']); is what’s causing the error. You’ll see on the next line that the plugin developer excepted that variable to be a WP_Error sometimes, because they actually check to make sure that it’s not. The problem is, they are trying to access a value from an array before making sure that it <string>is.

    If you change that chunk of code to the following:

    
        if (!is_wp_error($zemanta_response) && isset($response->status)) {
            $response = json_decode($zemanta_response['body']);
            $status = $response->status;
        }
    

    The plugin will check to make sure the variable is not a WP_Error first, and then it will continue processing. If it is an error, the event will stop, and you will no longer see the HTTP 500 error on publishing new posts.

Viewing 9 replies - 1 through 9 (of 9 total)
  • Just wanted to say thank you for having posted this!

    Solution is checking the $response var before it exists: it needs a bit more conditional logic to avoid errors.

    
    if (!is_wp_error($zemanta_response)) {
            $response = json_decode($zemanta_response['body']);
    	if (isset($response->status)) {
    		$status = $response->status;
    	}
        }
    

    Previous solution tries checking for $response before it’s defined, I split checks into separate parts and set the response before checking it.

    I have stumbled upon the same issue. Thanks for sharing.

    Thanks for this! I’d been trying to figure out the cause of the Error 500 and was lost in all the other WordPress/Error 500 threads. It didn’t occur to me it was the Search Everything plug-in.

    Thank you guys for this topic! I just hope, developer will continue the work!

    netzgestaltung

    (@netzgestaltung)

    Hi all,

    thank you for the solution provided here.

    What i still don’t know is what the zemanta ping is good for (and it seems to be down), so i decided to leave this part out completely.

    Solution for me was:

    
    /*
    function se_post_publish_ping($post_id) {
    	//should happen only on first publish
    	$status = false;
    	if( !empty( $_POST['post_status'] ) && ( $_POST['post_status'] == 'publish' ) && ( $_POST['original_post_status'] != 'publish' ) ) {
    		$permalink = get_permalink($post_id);
    		$zemanta_response = se_api(array(
    			'method' => 'zemanta.post_published_ping',
    			'current_url' => $permalink,
    			'post_url' => $permalink,
    			'post_rid' => '',
    			'interface' => 'wordpress-se',
    			'deployment' => 'search-everything',
    			'format' => 'json'
    		));
    	  $response = json_decode($zemanta_response['body']);
    		if (isset($response->status) && !is_wp_error($zemanta_response)) {
    			$status = $response->status;
    		}
    	}
    	return $status;
    }
    
    add_action( 'publish_post', 'se_post_publish_ping' );
    */
    

    i also like to keep it here so i can reference this thread in the copied/renamed plugin

    
    /*
    Plugin Name: Search Everything - Bugfix Error 500 on Publishing Posts
    Plugin URI: https://wordpress.org/support/topic/solution-resolve-the-500-server-error-when-publishing-new-posts/
    Description: [Netzgestaltung 2019-01-22] includes Bugfix from https://wordpress.org/support/topic/solution-resolve-the-500-server-error-when-publishing-new-posts/
    Version: 8.1.9
    Author: Sovrn, zemanta
    Author URI: http://www.sovrn.com
    */
    

    @netzgestaltung ThanQ so much. I did the same and now the problem has ceased 🙂

    Pete

    Thanks everyone! This thread has really saved us a lot of heartaches, and headaches.

    Joe

Viewing 9 replies - 1 through 9 (of 9 total)
  • You must be logged in to reply to this topic.