Title: register_widget is causing 500 errors
Last modified: August 21, 2016

---

# register_widget is causing 500 errors

 *  [elanio](https://wordpress.org/support/users/elanio/)
 * (@elanio)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/register_widget-is-causing-500-errors/)
 * I have a multie site setup, and I am trying to activate a theme. When doing so
   I get a nasty 500 error and the site (including admin dasboard for that site)
   are down.
 * Server error
    The website encountered an error while retrieving [http://localhost/blog.site.com/wp-admin/](http://localhost/blog.site.com/wp-admin/).
   It may be down for maintenance or configured incorrectly. Here are some suggestions:
   Reload this webpage later. HTTP Error 500 (Internal Server Error): An unexpected
   condition was encountered while the server was attempting to fulfill the request.
 * I activated the logs and get this error:
    `[10-Apr-2013 17:46:17 UTC] PHP Fatal
   error: Class 'Header' not found in /Applications/MAMP/htdocs/blog.site.com/wp-
   includes/widgets.php on line 324`
 * I traced the header class to my functions.php file for the theme where I am trying
   to register a widget:
 *     ```
       register_widget( 'Header' );
       register_widget( 'Search_Widget' );
   
       class Header extends WP_Widget {
   
       	function __construct() {
       		$widget_ops = array('description' => __( 'Displays the header.') );
       		parent::__construct('header', __('Header'), $widget_ops);
       	}
   
       	function widget( $args, $instance ) {
       		extract( $args );
   
       		// global $post;
       		global $categories, $cat_count, $top_level_cats, $top_level_count;
   
       		$categories = get_the_category($post->ID);
       		$cat_count = count($categories);
   
       		/* if the page requested is a post detail or category page */
       		if ( is_single() || is_category() ) {
       		/* set top level categories based on the nav */
       			$top_level_cats = array('brown', 'green', 'blue', 'red');
       			$top_level_count = count($top_level_cats);
   
       			for ( $i = 0; $i < $cat_count; $i++ ) {
       			/* if we're not in a parent category, then get the parent ID */
       			/* DISCLAIMER: we're only going 1 level deep here */
       				$slug = $categories[$i]->slug;
       				$parentID = $categories[$i]->category_parent;
       				if ( $parentID != 0 ) {
       					$parent = get_category( $parentID );
       				}
   
       				for ( $j = 0; $j < $top_level_count; $j++ ) {
       					if ( $parentID == 0 && $slug == $top_level_cats[$j] ) {
       					/* if it's a parent category and a top level category */
       						$slug = preg_replace("/-/", "_", $slug);
       						$banner = get_option( $slug . '_banner');
       						$name = $categories[$i]->name;
       						break 2;
       					} else if ( $parent->category_parent == 0 && $parent->slug == $top_level_cats[$j] ) {
       					/* if it's a child of a top level category */
       						$slug = preg_replace("/-/", "_", $parent->slug);
       						$banner = get_option( $slug . '_banner');
       						$name = $parent->name;
       						break 2;
       					}
       				}
       			}
       		}
   
       		if ( !$banner ) {
       		/* if banner was not set by the previous function, set it now */
       			$banner = get_option('banner');
       			$name = get_bloginfo('name');
       		}
   
       		echo "<div class=\"container\">\n";
       		echo "<a href=\"" . get_option('home') . "\"><img src=\"" . $banner . "\" alt=\"" . $name . "\"></a>\n";
   
       		wp_nav_menu( array( 'theme_location' => 'blog-menu', 'container' => false, 'menu_id' => 'menu', 'fallback_cb' => '', 'link_before' => '<span class="c">', 'link_after' => '</span><span class="r"></span><span class="b"></span>' ) );
   
       		echo "</div>\n";
       	}
       }
   
       class Search_Widget extends WP_Widget {
   
       	function __construct() {
       		$widget_ops = array('description' => __( 'New search widget for the right rail.') );
       		parent::__construct('search_widget', __('Search Widget'), $widget_ops);
       	}
   
       	function widget( $args, $instance ) {
       		extract( $args );
   
       		echo "<div class=\"pod wp-search\"><div class=\"hd\"></div><div class=\"bd\">\n";
       		include('searchform.php');
       		echo $after_widget;
   
       	}
       }
       ```
   
 * I am completely baffled.

Viewing 1 replies (of 1 total)

 *  Thread Starter [elanio](https://wordpress.org/support/users/elanio/)
 * (@elanio)
 * [13 years, 2 months ago](https://wordpress.org/support/topic/register_widget-is-causing-500-errors/#post-3645986)
 * I resolved this. Happens to be order of operations. so I moved the register_widget
   declarations below the classes and voila

Viewing 1 replies (of 1 total)

The topic ‘register_widget is causing 500 errors’ is closed to new replies.

## Tags

 * [500 error](https://wordpress.org/support/topic-tag/500-error/)
 * [widget](https://wordpress.org/support/topic-tag/widget/)

 * In: [Fixing WordPress](https://wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 1 reply
 * 1 participant
 * Last reply from: [elanio](https://wordpress.org/support/users/elanio/)
 * Last activity: [13 years, 2 months ago](https://wordpress.org/support/topic/register_widget-is-causing-500-errors/#post-3645986)
 * Status: not resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
