Title: Blog Down! Help
Last modified: August 19, 2016

---

# Blog Down! Help

 *  Resolved [drewhaas](https://wordpress.org/support/users/drewhaas/)
 * (@drewhaas)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/)
 * Something bad has happened.
    I can’t log in and this is what my home page reads:
   Warning: Cannot modify header information – headers already sent by (output started
   at /home/drewhaas/adktrailrun.com/wp-includes/classes.php:1597) in /home/drewhaas/
   adktrailrun.com/wp-includes/pluggable.php on line 865
 * [http://www.adktrailrun.com](http://www.adktrailrun.com)
    Please any help is 
   apreciated..

Viewing 15 replies - 1 through 15 (of 16 total)

1 [2](https://wordpress.org/support/topic/blog-down-help/page/2/?output_format=md)
[→](https://wordpress.org/support/topic/blog-down-help/page/2/?output_format=md)

 *  [S.K](https://wordpress.org/support/users/kichu/)
 * (@kichu)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180369)
 * What did you do last with the blog? It will help locate the issue.
 * You can read this too:
 * [http://codex.wordpress.org/Answers-Troubleshooting#Headers_already_sent](http://codex.wordpress.org/Answers-Troubleshooting#Headers_already_sent)
 * S.K
 *  Thread Starter [drewhaas](https://wordpress.org/support/users/drewhaas/)
 * (@drewhaas)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180371)
 * I was adjusting the header yesterday but everything seemed fine then.
    Any way
   for me to log into the blog? thanks
 *  [Brian Harris](https://wordpress.org/support/users/zgani/)
 * (@zgani)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180376)
 * The problem is at line 1597 in your classes.php
    Original file ends at 1595 –
   your file has 2 extra blank lines, use your ftp to delete them and try again.
 *  [S.K](https://wordpress.org/support/users/kichu/)
 * (@kichu)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180400)
 * ZGani,
 * Extra blank lines beyond the closing tag ?> doesn’t have any effect. I have tested
   it by creating 3 blank lines beyond the closure of the scripting block of classes.
   php in my localhost installation.
 * S.K
 *  [Brian Harris](https://wordpress.org/support/users/zgani/)
 * (@zgani)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180405)
 * I dont know about localhost S.K – I’ve run into this problem a couple of times
   now and they seem to matter on the servers I’ve worked on.
 * One of the affected file was the wp-config.php where the closing tag ?> was inclued
   and there was a blank space after it. I am told otherwise but I beg to differ.
 * In the above case the reported error @ line 1597 is a blank line (if drewhaas
   would confirm that) – unless in his/her case there is some coding there then 
   I may stand corrected, but on my file it ends with the ?> @ line 1595 and nothing
   beyond that.
 *  Thread Starter [drewhaas](https://wordpress.org/support/users/drewhaas/)
 * (@drewhaas)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180519)
 * nope I don’t have any spaces after 1595…
 *  [do77](https://wordpress.org/support/users/do77/)
 * (@do77)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180522)
 * Use your ftp and change your folder ‘plugins’ into ‘plugins_HOLD’ or so. This
   will deactivate all your plugins. Check if you can log in now … if so, use your
   ftp and rename the folder back to ‘plugins’.
 * The worst thing that can happen is that you have to re-activate all plugins again.
 * do77
 *  [Brian Harris](https://wordpress.org/support/users/zgani/)
 * (@zgani)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180523)
 * [@drewhaas](https://wordpress.org/support/users/drewhaas/) – the error indicates
   that its reading something at line 1597, to the naked eye there is nothing there
   but PHP is reading otherwise.
 * Use PHP editor and you will see that there is line 1596 and 1597 which are blank.
   If there is no extra numbered line then the above error should not occur
 *  [timjrobinson](https://wordpress.org/support/users/timjrobinson/)
 * (@timjrobinson)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180524)
 * If PHP is trying to read past the end of a file it is most likely an open bracket(
   like {) that isn’t matched up with a closing bracket (like }).
 * If you use something like notepad++ it will show matching pairs of brackets, 
   download that (or something similar) and put } at the end of the file and if 
   it matches something it will show it and you can see where you have a bracket
   that is not being closed.
 * Or just put } just before the ?> at the end of the file and see if it clears 
   it up.
 *  Thread Starter [drewhaas](https://wordpress.org/support/users/drewhaas/)
 * (@drewhaas)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180533)
 * <?php
    /** * Holds Most of the WordPress classes. * * Some of the other classes
   are contained in other files. For example, the * WordPress cache is in cache.
   php and the WordPress roles API is in * capabilities.php. The third party libraries
   are contained in their own * separate files. * * [@package](https://wordpress.org/support/users/package/)
   WordPress */
 * /**
    * WordPress environment setup class. * * [@package](https://wordpress.org/support/users/package/)
   WordPress * [@since](https://wordpress.org/support/users/since/) 2.0.0 */ class
   WP { /** * Public query variables. * * Long list of public query variables. **
   [@since](https://wordpress.org/support/users/since/) 2.0.0 * [@access](https://wordpress.org/support/users/access/)
   public * [@var](https://wordpress.org/support/users/var/) array */ var $public_query_vars
   = array(‘m’, ‘p’, ‘posts’, ‘w’, ‘cat’, ‘withcomments’, ‘withoutcomments’, ‘s’,‘
   search’, ‘exact’, ‘sentence’, ‘debug’, ‘calendar’, ‘page’, ‘paged’, ‘more’, ‘
   tb’, ‘pb’, ‘author’, ‘order’, ‘orderby’, ‘year’, ‘monthnum’, ‘day’, ‘hour’, ‘
   minute’, ‘second’, ‘name’, ‘category_name’, ‘tag’, ‘feed’, ‘author_name’, ‘static’,‘
   pagename’, ‘page_id’, ‘error’, ‘comments_popup’, ‘attachment’, ‘attachment_id’,‘
   subpost’, ‘subpost_id’, ‘preview’, ‘robots’, ‘taxonomy’, ‘term’, ‘cpage’);
 *  /**
    * Private query variables. * * Long list of private query variables. * *
   [@since](https://wordpress.org/support/users/since/) 2.0.0 * [@var](https://wordpress.org/support/users/var/)
   array */ var $private_query_vars = array(‘offset’, ‘posts_per_page’, ‘posts_per_archive_page’,‘
   showposts’, ‘nopaging’, ‘post_type’, ‘post_status’, ‘category__in’, ‘category__not_in’,‘
   category__and’, ‘tag__in’, ‘tag__not_in’, ‘tag__and’, ‘tag_slug__in’, ‘tag_slug__and’,‘
   tag_id’, ‘post_mime_type’, ‘perm’, ‘comments_per_page’);
 *  /**
    * Extra query variables set by the user. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@var](https://wordpress.org/support/users/var/) array */ var $extra_query_vars
   = array();
 *  /**
    * Query variables for setting up the WordPress Query Loop. * * [@since](https://wordpress.org/support/users/since/)
   2.0.0 * [@var](https://wordpress.org/support/users/var/) array */ var $query_vars;
 *  /**
    * String parsed to set the query variables. * * [@since](https://wordpress.org/support/users/since/)
   2.0.0 * [@var](https://wordpress.org/support/users/var/) string */ var $query_string;
 *  /**
    * Permalink or requested URI. * * [@since](https://wordpress.org/support/users/since/)
   2.0.0 * [@var](https://wordpress.org/support/users/var/) string */ var $request;
 *  /**
    * Rewrite rule the request matched. * * [@since](https://wordpress.org/support/users/since/)
   2.0.0 * [@var](https://wordpress.org/support/users/var/) string */ var $matched_rule;
 *  /**
    * Rewrite query the request matched. * * [@since](https://wordpress.org/support/users/since/)
   2.0.0 * [@var](https://wordpress.org/support/users/var/) string */ var $matched_query;
 *  /**
    * Whether already did the permalink. * * [@since](https://wordpress.org/support/users/since/)
   2.0.0 * [@var](https://wordpress.org/support/users/var/) bool */ var $did_permalink
   = false;
 *  /**
    * Add name to list of public query variables. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * * [@param](https://wordpress.org/support/users/param/) string $qv Query
   variable name. */ function add_query_var($qv) { if ( !in_array($qv, $this->public_query_vars))
   $this->public_query_vars[] = $qv; }
 *  /**
    * Set the value of a query variable. * * [@since](https://wordpress.org/support/users/since/)
   2.3.0 * * [@param](https://wordpress.org/support/users/param/) string $key Query
   variable name. * [@param](https://wordpress.org/support/users/param/) mixed $
   value Query variable value. */ function set_query_var($key, $value) { $this->
   query_vars[$key] = $value; }
 *  /**
    * Parse request to find correct WordPress query. * * Sets up the query 
   variables based on the request. There are also many * filters and actions that
   can be used to further manipulate the result. * * [@since](https://wordpress.org/support/users/since/)
   2.0.0 * * [@param](https://wordpress.org/support/users/param/) array|string $
   extra_query_vars Set the extra query variables. */ function parse_request($extra_query_vars
   = ”) { global $wp_rewrite;
 *  $this->query_vars = array();
    $taxonomy_query_vars = array();
 *  if ( is_array($extra_query_vars) )
    $this->extra_query_vars = & $extra_query_vars;
   else if (! empty($extra_query_vars)) parse_str($extra_query_vars, $this->extra_query_vars);
 *  // Process PATH_INFO, REQUEST_URI, and 404 for permalinks.
 *  // Fetch the rewrite rules.
    $rewrite = $wp_rewrite->wp_rewrite_rules();
 *  if (! empty($rewrite)) {
    // If we match a rewrite rule, this will be cleared.
   $error = ‘404’; $this->did_permalink = true;
 *  if ( isset($_SERVER[‘PATH_INFO’]) )
    $pathinfo = $_SERVER[‘PATH_INFO’]; else
   $pathinfo = ”; $pathinfo_array = explode(‘?’, $pathinfo); $pathinfo = str_replace(“%”,“%
   25”, $pathinfo_array[0]); $req_uri = $_SERVER[‘REQUEST_URI’]; $req_uri_array 
   = explode(‘?’, $req_uri); $req_uri = $req_uri_array[0]; $self = $_SERVER[‘PHP_SELF’];
   $home_path = parse_url(get_option(‘home’)); if ( isset($home_path[‘path’]) ) 
   $home_path = $home_path[‘path’]; else $home_path = ”; $home_path = trim($home_path,‘/’);
 *  // Trim path info from the end and the leading home path from the
    // front.
   For path info requests, this leaves us with the requesting // filename, if any.
   For 404 requests, this leaves us with the // requested permalink. $req_uri = 
   str_replace($pathinfo, ”, rawurldecode($req_uri)); $req_uri = trim($req_uri, ‘/’);
   $req_uri = preg_replace(“|^$home_path|”, ”, $req_uri); $req_uri = trim($req_uri,‘/’);
   $pathinfo = trim($pathinfo, ‘/’); $pathinfo = preg_replace(“|^$home_path|”, ”,
   $pathinfo); $pathinfo = trim($pathinfo, ‘/’); $self = trim($self, ‘/’); $self
   = preg_replace(“|^$home_path|”, ”, $self); $self = trim($self, ‘/’);
 *  // The requested permalink is in $pathinfo for path info requests and
    // $req_uri
   for other requests. if ( ! empty($pathinfo) && !preg_match(‘|^.*’ . $wp_rewrite-
   >index . ‘$|’, $pathinfo) ) { $request = $pathinfo; } else { // If the request
   uri is the index, blank it out so that we don’t try to match it against a rule.
   if ( $req_uri == $wp_rewrite->index ) $req_uri = ”; $request = $req_uri; }
 *  $this->request = $request;
 *  // Look for matches.
    $request_match = $request; foreach ( (array) $rewrite 
   as $match => $query) { // Don’t try to match against AtomPub calls if ( $req_uri
   == ‘wp-app.php’ ) break;
 *  // If the requesting file is the anchor of the match, prepend it
    // to the 
   path info. if ((! empty($req_uri)) && (strpos($match, $req_uri) === 0) && ($req_uri!
   = $request)) { $request_match = $req_uri . ‘/’ . $request; }
 *  if (preg_match(“#^$match#”, $request_match, $matches) ||
    preg_match(“#^$match#”,
   urldecode($request_match), $matches)) { // Got a match. $this->matched_rule =
   $match;
 *  // Trim the query of everything up to the ‘?’.
    $query = preg_replace(“!^.+\?!”,”,
   $query);
 *  // Substitute the substring matches into the query.
    eval(“@\$query = \”” . 
   addslashes($query) . “\”;”);
 *  $this->matched_query = $query;
 *  // Parse the query.
    parse_str($query, $perma_query_vars);
 *  // If we’re processing a 404 request, clear the error var
    // since we found
   something. if (isset($_GET[‘error’])) unset($_GET[‘error’]);
 *  if (isset($error))
    unset($error);
 *  break;
    } }
 *  // If req_uri is empty or if it is a request for ourself, unset error.
    if (
   empty($request) || $req_uri == $self || strpos($_SERVER[‘PHP_SELF’], ‘wp-admin/’)!
   == false) { if (isset($_GET[‘error’])) unset($_GET[‘error’]);
 *  if (isset($error))
    unset($error);
 *  if (isset($perma_query_vars) && strpos($_SERVER[‘PHP_SELF’], ‘wp-admin/’) !=
   = false)
    unset($perma_query_vars);
 *  $this->did_permalink = false;
    } }
 *  $this->public_query_vars = apply_filters(‘query_vars’, $this->public_query_vars);
 *  foreach ( $GLOBALS[‘wp_taxonomies’] as $taxonomy => $t )
    if ( $t->query_var)
   $taxonomy_query_vars[$t->query_var] = $taxonomy;
 *  for ($i=0; $i<count($this->public_query_vars); $i += 1) {
    $wpvar = $this->public_query_vars[
   $i]; if (isset($this->extra_query_vars[$wpvar])) $this->query_vars[$wpvar] = 
   $this->extra_query_vars[$wpvar]; elseif (isset($GLOBALS[$wpvar])) $this->query_vars[
   $wpvar] = $GLOBALS[$wpvar]; elseif (!empty($_POST[$wpvar])) $this->query_vars[
   $wpvar] = $_POST[$wpvar]; elseif (!empty($_GET[$wpvar])) $this->query_vars[$wpvar]
   = $_GET[$wpvar]; elseif (!empty($perma_query_vars[$wpvar])) $this->query_vars[
   $wpvar] = $perma_query_vars[$wpvar];
 *  if ( !empty( $this->query_vars[$wpvar] ) ) {
    $this->query_vars[$wpvar] = (string)
   $this->query_vars[$wpvar]; if ( in_array( $wpvar, $taxonomy_query_vars ) ) { 
   $this->query_vars[‘taxonomy’] = $taxonomy_query_vars[$wpvar]; $this->query_vars[‘
   term’] = $this->query_vars[$wpvar]; } } }
 *  foreach ( (array) $this->private_query_vars as $var) {
    if (isset($this->extra_query_vars[
   $var])) $this->query_vars[$var] = $this->extra_query_vars[$var]; elseif (isset(
   $GLOBALS[$var]) && ” != $GLOBALS[$var]) $this->query_vars[$var] = $GLOBALS[$var];}
 *  if ( isset($error) )
    $this->query_vars[‘error’] = $error;
 *  $this->query_vars = apply_filters(‘request’, $this->query_vars);
 *  do_action_ref_array(‘parse_request’, array(&$this));
    }
 *  /**
    * Send additional HTTP headers for caching, content type, etc. * * Sets
   the X-Pingback header, 404 status (if 404), Content-type. If showing * a feed,
   it will also send last-modified, etag, and 304 status if needed. * * [@since](https://wordpress.org/support/users/since/)
   2.0.0 */ function send_headers() { $headers = array(‘X-Pingback’ => get_bloginfo(‘
   pingback_url’)); $status = null; $exit_required = false;
 *  if ( is_user_logged_in() )
    $headers = array_merge($headers, wp_get_nocache_headers());
   if ( !empty($this->query_vars[‘error’]) && ‘404’ == $this->query_vars[‘error’]){
   $status = 404; if ( !is_user_logged_in() ) $headers = array_merge($headers, wp_get_nocache_headers());
   $headers[‘Content-Type’] = get_option(‘html_type’) . ‘; charset=’ . get_option(‘
   blog_charset’); } else if ( empty($this->query_vars[‘feed’]) ) { $headers[‘Content-
   Type’] = get_option(‘html_type’) . ‘; charset=’ . get_option(‘blog_charset’);}
   else { // We’re showing a feed, so WP is indeed the only thing that last changed
   if ( !empty($this->query_vars[‘withcomments’]) || ( empty($this->query_vars[‘
   withoutcomments’]) && ( !empty($this->query_vars[‘p’]) || !empty($this->query_vars[‘
   name’]) || !empty($this->query_vars[‘page_id’]) || !empty($this->query_vars[‘
   pagename’]) || !empty($this->query_vars[‘attachment’]) || !empty($this->query_vars[‘
   attachment_id’]) ) ) ) $wp_last_modified = mysql2date(‘D, d M Y H:i:s’, get_lastcommentmodified(‘
   GMT’), 0).’ GMT’; else $wp_last_modified = mysql2date(‘D, d M Y H:i:s’, get_lastpostmodified(‘
   GMT’), 0).’ GMT’; $wp_etag = ‘”‘ . md5($wp_last_modified) . ‘”‘; $headers[‘Last-
   Modified’] = $wp_last_modified; $headers[‘ETag’] = $wp_etag;
 *  // Support for Conditional GET
    if (isset($_SERVER[‘HTTP_IF_NONE_MATCH’])) $
   client_etag = stripslashes(stripslashes($_SERVER[‘HTTP_IF_NONE_MATCH’])); else
   $client_etag = false;
 *  $client_last_modified = empty($_SERVER[‘HTTP_IF_MODIFIED_SINCE’]) ? ” : trim(
   $_SERVER[‘HTTP_IF_MODIFIED_SINCE’]);
    // If string is empty, return 0. If not,
   attempt to parse into a timestamp $client_modified_timestamp = $client_last_modified?
   strtotime($client_last_modified) : 0;
 *  // Make a timestamp for our most recent modification…
    $wp_modified_timestamp
   = strtotime($wp_last_modified);
 *  if ( ($client_last_modified && $client_etag) ?
    (($client_modified_timestamp
   >= $wp_modified_timestamp) && ($client_etag == $wp_etag)) : (($client_modified_timestamp
   >= $wp_modified_timestamp) || ($client_etag == $wp_etag)) ) { $status = 304; 
   $exit_required = true; } }
 *  $headers = apply_filters(‘wp_headers’, $headers, $this);
 *  if ( ! empty( $status ) )
    status_header( $status ); foreach( (array) $headers
   as $name => $field_value ) [@header](https://wordpress.org/support/users/header/)(“{
   $name}: {$field_value}”);
 *  if ($exit_required)
    exit();
 *  do_action_ref_array(‘send_headers’, array(&$this));
    }
 *  /**
    * Sets the query string property based off of the query variable property.**
   The ‘query_string’ filter is deprecated, but still works. Plugins should * use
   the ‘request’ filter instead. * * [@since](https://wordpress.org/support/users/since/)
   2.0.0 */ function build_query_string() { $this->query_string = ”; foreach ( (
   array) array_keys($this->query_vars) as $wpvar) { if ( ” != $this->query_vars[
   $wpvar] ) { $this->query_string .= (strlen($this->query_string) < 1) ? ” : ‘&’;
   if ( !is_scalar($this->query_vars[$wpvar]) ) // Discard non-scalars. continue;
   $this->query_string .= $wpvar . ‘=’ . rawurlencode($this->query_vars[$wpvar]);}}
 *  // query_string filter deprecated. Use request filter instead.
    if ( has_filter(‘
   query_string’) ) { // Don’t bother filtering and parsing if no plugins are hooked
   in. $this->query_string = apply_filters(‘query_string’, $this->query_string);
   parse_str($this->query_string, $this->query_vars); } }
 *  /**
    * Setup the WordPress Globals. * * The query_vars property will be extracted
   to the GLOBALS. So care should * be taken when naming global variables that might
   interfere with the * WordPress environment. * * [@global](https://wordpress.org/support/users/global/)
   string $query_string Query string for the loop. * [@global](https://wordpress.org/support/users/global/)
   int $more Only set, if single page or post. * [@global](https://wordpress.org/support/users/global/)
   int $single If single page or post. Only set, if single page or post. * * [@since](https://wordpress.org/support/users/since/)
   2.0.0 */ function register_globals() { global $wp_query; // Extract updated query
   vars back into global namespace. foreach ( (array) $wp_query->query_vars as $
   key => $value) { $GLOBALS[$key] = $value; }
 *  $GLOBALS[‘query_string’] = $this->query_string;
    $GLOBALS[‘posts’] = & $wp_query-
   >posts; $GLOBALS[‘post’] = $wp_query->post; $GLOBALS[‘request’] = $wp_query->
   request;
 *  if ( is_single() || is_page() ) {
    $GLOBALS[‘more’] = 1; $GLOBALS[‘single’] 
   = 1; } }
 *  /**
    * Setup the current user. * * [@since](https://wordpress.org/support/users/since/)
   2.0.0 */ function init() { wp_get_current_user(); }
 *  /**
    * Setup the Loop based on the query variables. * * @uses WP::$query_vars*
   [@since](https://wordpress.org/support/users/since/) 2.0.0 */ function query_posts(){
   global $wp_the_query; $this->build_query_string(); $wp_the_query->query($this-
   >query_vars); }
 *  /**
    * Set the Headers for 404, if permalink is not found. * * Issue a 404 if
   a permalink request doesn’t match any posts. Don’t issue * a 404 if one was already
   issued, if the request was a search, or if the * request was a regular query 
   string request rather than a permalink * request. Issues a 200, if not 404. **
   [@since](https://wordpress.org/support/users/since/) 2.0.0 */ function handle_404(){
   global $wp_query;
 *  if ( (0 == count($wp_query->posts)) && !is_404() && !is_search() && ( $this-
   >did_permalink || (!empty($_SERVER[‘QUERY_STRING’]) && (false === strpos($_SERVER[‘
   REQUEST_URI’], ‘?’))) ) ) {
    // Don’t 404 for these queries if they matched an
   object. if ( ( is_tag() || is_category() || is_author() ) && $wp_query->get_queried_object()){
   if ( !is_404() ) status_header( 200 ); return; } $wp_query->set_404(); status_header(
   404 ); nocache_headers(); } elseif ( !is_404() ) { status_header( 200 ); } }
 *  /**
    * Sets up all of the variables required by the WordPress environment. **
   The action ‘wp’ has one parameter that references the WP object. It * allows 
   for accessing the properties and methods to further manipulate the * object. **
   [@since](https://wordpress.org/support/users/since/) 2.0.0 * * [@param](https://wordpress.org/support/users/param/)
   string|array $query_args Passed to {@link parse_request()} */ function main($
   query_args = ”) { $this->init(); $this->parse_request($query_args); $this->send_headers();
   $this->query_posts(); $this->handle_404(); $this->register_globals(); do_action_ref_array(‘
   wp’, array(&$this)); }
 *  /**
    * PHP4 Constructor – Does nothing. * * Call main() method when ready to
   run setup. * * [@since](https://wordpress.org/support/users/since/) 2.0.0 * *
   [@return](https://wordpress.org/support/users/return/) WP */ function WP() { //
   Empty. } }
 * /**
    * WordPress Error class. * * Container for checking for WordPress errors
   and error messages. Return * WP_Error and use {@link is_wp_error()} to check 
   if this class is returned. * Many core WordPress functions pass this class in
   the event of an error and * if not handled properly will result in code errors.**
   [@package](https://wordpress.org/support/users/package/) WordPress * [@since](https://wordpress.org/support/users/since/)
   2.1.0 */ class WP_Error { /** * Stores the list of errors. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@var](https://wordpress.org/support/users/var/) array * [@access](https://wordpress.org/support/users/access/)
   private */ var $errors = array();
 *  /**
    * Stores the list of data for error codes. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@var](https://wordpress.org/support/users/var/) array * [@access](https://wordpress.org/support/users/access/)
   private */ var $error_data = array();
 *  /**
    * PHP4 Constructor – Sets up error message. * * If code parameter is empty
   then nothing will be done. It is possible to * add multiple messages to the same
   code, but with other methods in the * class. * * All parameters are optional,
   but if the code parameter is set, then the * data parameter is optional. * * 
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * * [@param](https://wordpress.org/support/users/param/)
   string|int $code Error code * [@param](https://wordpress.org/support/users/param/)
   string $message Error message * [@param](https://wordpress.org/support/users/param/)
   mixed $data Optional. Error data. * [@return](https://wordpress.org/support/users/return/)
   WP_Error */ function WP_Error($code = ”, $message = ”, $data = ”) { if ( empty(
   $code) ) return;
 *  $this->errors[$code][] = $message;
 *  if ( ! empty($data) )
    $this->error_data[$code] = $data; }
 *  /**
    * Retrieve all error codes. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@access](https://wordpress.org/support/users/access/) public * * [@return](https://wordpress.org/support/users/return/)
   array List of error codes, if avaiable. */ function get_error_codes() { if ( 
   empty($this->errors) ) return array();
 *  return array_keys($this->errors);
    }
 *  /**
    * Retrieve first error code available. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@access](https://wordpress.org/support/users/access/) public * * [@return](https://wordpress.org/support/users/return/)
   string|int Empty string, if no error codes. */ function get_error_code() { $codes
   = $this->get_error_codes();
 *  if ( empty($codes) )
    return ”;
 *  return $codes[0];
    }
 *  /**
    * Retrieve all error messages or error messages matching code. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * * [@param](https://wordpress.org/support/users/param/) string|int $code
   Optional. Retrieve messages matching code, if exists. * [@return](https://wordpress.org/support/users/return/)
   array Error strings on success, or empty array on failure (if using codee parameter).*/
   function get_error_messages($code = ”) { // Return all messages if no code specified.
   if ( empty($code) ) { $all_messages = array(); foreach ( (array) $this->errors
   as $code => $messages ) $all_messages = array_merge($all_messages, $messages);
 *  return $all_messages;
    }
 *  if ( isset($this->errors[$code]) )
    return $this->errors[$code]; else return
   array(); }
 *  /**
    * Get single error message. * * This will get the first message available
   for the code. If no code is * given then the first code available will be used.**
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * * [@param](https://wordpress.org/support/users/param/)
   string|int $code Optional. Error code to retrieve message. * [@return](https://wordpress.org/support/users/return/)
   string */ function get_error_message($code = ”) { if ( empty($code) ) $code =
   $this->get_error_code(); $messages = $this->get_error_messages($code); if ( empty(
   $messages) ) return ”; return $messages[0]; }
 *  /**
    * Retrieve error data for error code. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * * [@param](https://wordpress.org/support/users/param/) string|int $code
   Optional. Error code. * [@return](https://wordpress.org/support/users/return/)
   mixed Null, if no errors. */ function get_error_data($code = ”) { if ( empty(
   $code) ) $code = $this->get_error_code();
 *  if ( isset($this->error_data[$code]) )
    return $this->error_data[$code]; return
   null; }
 *  /**
    * Append more error messages to list of error messages. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@access](https://wordpress.org/support/users/access/) public * * [@param](https://wordpress.org/support/users/param/)
   string|int $code Error code. * [@param](https://wordpress.org/support/users/param/)
   string $message Error message. * [@param](https://wordpress.org/support/users/param/)
   mixed $data Optional. Error data. */ function add($code, $message, $data = ”){
   $this->errors[$code][] = $message; if ( ! empty($data) ) $this->error_data[$code]
   = $data; }
 *  /**
    * Add data for error code. * * The error code can only contain one error
   data. * * [@since](https://wordpress.org/support/users/since/) 2.1.0 * * [@param](https://wordpress.org/support/users/param/)
   mixed $data Error data. * [@param](https://wordpress.org/support/users/param/)
   string|int $code Error code. */ function add_data($data, $code = ”) { if ( empty(
   $code) ) $code = $this->get_error_code();
 *  $this->error_data[$code] = $data;
    } }
 * /**
    * Check whether variable is a WordPress Error. * * Looks at the object and
   if a WP_Error class. Does not check to see if the * parent is also WP_Error, 
   so can’t inherit WP_Error and still use this * function. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * * [@param](https://wordpress.org/support/users/param/) mixed $thing Check
   if unknown variable is WordPress Error object. * [@return](https://wordpress.org/support/users/return/)
   bool True, if WP_Error. False, if not WP_Error. */ function is_wp_error($thing){
   if ( is_object($thing) && is_a($thing, ‘WP_Error’) ) return true; return false;}
 * /**
    * A class for displaying various tree-like structures. * * Extend the Walker
   class to use it, see examples at the below. Child classes * do not need to implement
   all of the abstract methods in the class. The child * only needs to implement
   the methods that are needed. Also, the methods are * not strictly abstract in
   that the parameter definition needs to be followed. * The child classes can have
   additional parameters. * * [@package](https://wordpress.org/support/users/package/)
   WordPress * [@since](https://wordpress.org/support/users/since/) 2.1.0 * [@abstract](https://wordpress.org/support/users/abstract/)*/
   class Walker { /** * What the class handles. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@var](https://wordpress.org/support/users/var/) string * [@access](https://wordpress.org/support/users/access/)
   public */ var $tree_type;
 *  /**
    * DB fields to use. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@var](https://wordpress.org/support/users/var/) array * [@access](https://wordpress.org/support/users/access/)
   protected */ var $db_fields;
 *  /**
    * Max number of pages walked by the paged walker * * [@since](https://wordpress.org/support/users/since/)
   2.7.0 * [@var](https://wordpress.org/support/users/var/) int * [@access](https://wordpress.org/support/users/access/)
   protected */ var $max_pages = 1;
 *  /**
    * Starts the list before the elements are added. * * Additional parameters
   are used in child classes. The args parameter holds * additional values that 
   may be used with the child class methods. This * method is called at the start
   of the output list. * * [@since](https://wordpress.org/support/users/since/) 
   2.1.0 * [@abstract](https://wordpress.org/support/users/abstract/) * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. */ function
   start_lvl(&$output) {}
 *  /**
    * Ends the list of after the elements are added. * * Additional parameters
   are used in child classes. The args parameter holds * additional values that 
   may be used with the child class methods. This * method finishes the list at 
   the end of output of the elements. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@abstract](https://wordpress.org/support/users/abstract/) * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. */ function
   end_lvl(&$output) {}
 *  /**
    * Start the element output. * * Additional parameters are used in child
   classes. The args parameter holds * additional values that may be used with the
   child class methods. Includes * the element output also. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@abstract](https://wordpress.org/support/users/abstract/) * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. */ function
   start_el(&$output) {}
 *  /**
    * Ends the element output, if needed. * * Additional parameters are used
   in child classes. The args parameter holds * additional values that may be used
   with the child class methods. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@abstract](https://wordpress.org/support/users/abstract/) * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. */ function
   end_el(&$output) {}
 *  /**
    * Traverse elements to create list from elements. * * Display one element
   if the element doesn’t have any children otherwise, * display the element and
   its children. Will only traverse up to the max * depth and no ignore elements
   under that depth. It is possible to set the * max depth to include all depths,
   see walk() method. * * This method shouldn’t be called directly, use the walk()
   method instead. * * [@since](https://wordpress.org/support/users/since/) 2.5.0**
   [@param](https://wordpress.org/support/users/param/) object $element Data object*
   [@param](https://wordpress.org/support/users/param/) array $children_elements
   List of elements to continue traversing. * [@param](https://wordpress.org/support/users/param/)
   int $max_depth Max depth to traverse. * [@param](https://wordpress.org/support/users/param/)
   int $depth Depth of current element. * [@param](https://wordpress.org/support/users/param/)
   array $args * [@param](https://wordpress.org/support/users/param/) string $output
   Passed by reference. Used to append additional content. * [@return](https://wordpress.org/support/users/return/)
   null Null on failure with no changes to parameters. */ function display_element(
   $element, &$children_elements, $max_depth, $depth=0, $args, &$output ) {
 *  if ( !$element )
    return;
 *  $id_field = $this->db_fields[‘id’];
 *  //display this element
    if ( is_array( $args[0] ) ) $args[0][‘has_children’]
   = ! empty( $children_elements[$element->$id_field] ); $cb_args = array_merge(
   array(&$output, $element, $depth), $args); call_user_func_array(array(&$this,‘
   start_el’), $cb_args);
 *  $id = $element->$id_field;
 *  // descend only when the depth is right and there are childrens for this element
   
   if ( ($max_depth == 0 || $max_depth > $depth+1 ) && isset( $children_elements[
   $id]) ) {
 *  foreach( $children_elements[ $id ] as $child ){
 *  if ( !isset($newlevel) ) {
    $newlevel = true; //start the child delimiter $cb_args
   = array_merge( array(&$output, $depth), $args); call_user_func_array(array(&$
   this, ‘start_lvl’), $cb_args); } $this->display_element( $child, $children_elements,
   $max_depth, $depth + 1, $args, $output ); } unset( $children_elements[ $id ] );}
 *  if ( isset($newlevel) && $newlevel ){
    //end the child delimiter $cb_args = 
   array_merge( array(&$output, $depth), $args); call_user_func_array(array(&$this,‘
   end_lvl’), $cb_args); }
 *  //end this element
    $cb_args = array_merge( array(&$output, $element, $depth),
   $args); call_user_func_array(array(&$this, ‘end_el’), $cb_args); }
 *  /**
    * Display array of elements hierarchically. * * It is a generic function
   which does not assume any existing order of * elements. max_depth = -1 means 
   flatly display every element. max_depth = * 0 means display all levels. max_depth
   > 0 specifies the number of * display levels. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * * [@param](https://wordpress.org/support/users/param/) array $elements*
   [@param](https://wordpress.org/support/users/param/) int $max_depth * [@return](https://wordpress.org/support/users/return/)
   string */ function walk( $elements, $max_depth) {
 *  $args = array_slice(func_get_args(), 2);
    $output = ”;
 *  if ($max_depth < -1) //invalid parameter
    return $output;
 *  if (empty($elements)) //nothing to walk
    return $output;
 *  $id_field = $this->db_fields[‘id’];
    $parent_field = $this->db_fields[‘parent’];
 *  // flat display
    if ( -1 == $max_depth ) { $empty_array = array(); foreach (
   $elements as $e ) $this->display_element( $e, $empty_array, 1, 0, $args, $output);
   return $output; }
 *  /*
    * need to display in hierarchical order * seperate elements into two buckets:
   top level and children elements * children_elements is two dimensional array,
   eg. * children_elements[10][] contains all sub-elements whose parent is 10. */
   $top_level_elements = array(); $children_elements = array(); foreach ( $elements
   as $e) { if ( 0 == $e->$parent_field ) $top_level_elements[] = $e; else $children_elements[
   $e->$parent_field ][] = $e; }
 *  /*
    * when none of the elements is top level * assume the first one must be 
   root of the sub elements */ if ( empty($top_level_elements) ) {
 *  $first = array_slice( $elements, 0, 1 );
    $root = $first[0];
 *  $top_level_elements = array();
    $children_elements = array(); foreach ( $elements
   as $e) { if ( $root->$parent_field == $e->$parent_field ) $top_level_elements[]
   = $e; else $children_elements[ $e->$parent_field ][] = $e; } }
 *  foreach ( $top_level_elements as $e )
    $this->display_element( $e, $children_elements,
   $max_depth, 0, $args, $output );
 *  /*
    * if we are displaying all levels, and remaining children_elements is not
   empty, * then we got orphans, which should be displayed regardless */ if ( ( 
   $max_depth == 0 ) && count( $children_elements ) > 0 ) { $empty_array = array();
   foreach ( $children_elements as $orphans ) foreach( $orphans as $op ) $this->
   display_element( $op, $empty_array, 1, 0, $args, $output ); }
 *  return $output;
    }
 *  /**
    * paged_walk() – produce a page of nested elements * * Given an array of
   hierarchical elements, the maximum depth, a specific page number, * and number
   of elements per page, this function first determines all top level root elements*
   belonging to that page, then lists them and all of their children in hierarchical
   order. * * [@package](https://wordpress.org/support/users/package/) WordPress*
   [@since](https://wordpress.org/support/users/since/) 2.7 * [@param](https://wordpress.org/support/users/param/)
   $max_depth = 0 means display all levels; $max_depth > 0 specifies the number 
   of display levels. * [@param](https://wordpress.org/support/users/param/) $page_num
   the specific page number, beginning with 1. * [@return](https://wordpress.org/support/users/return/)
   XHTML of the specified page of elements */ function paged_walk( $elements, $max_depth,
   $page_num, $per_page ) {
 *  /* sanity check */
    if ( empty($elements) || $max_depth < -1 ) return ”;
 *  $args = array_slice( func_get_args(), 4 );
    $output = ”;
 *  $id_field = $this->db_fields[‘id’];
    $parent_field = $this->db_fields[‘parent’];
 *  $count = -1;
    if ( -1 == $max_depth ) $total_top = count( $elements ); if ( 
   $page_num < 1 || $per_page < 0 ) { // No paging $paging = false; $start = 0; 
   if ( -1 == $max_depth ) $end = $total_top; $this->max_pages = 1; } else { $paging
   = true; $start = ( (int)$page_num – 1 ) * (int)$per_page; $end = $start + $per_page;
   if ( -1 == $max_depth ) $this->max_pages = ceil($total_top / $per_page); }
 *  // flat display
    if ( -1 == $max_depth ) { if ( !empty($args[0][‘reverse_top_level’])){
   $elements = array_reverse( $elements ); $oldstart = $start; $start = $total_top–
   $end; $end = $total_top – $oldstart; }
 *  $empty_array = array();
    foreach ( $elements as $e ) { $count++; if ( $count
   < $start ) continue; if ( $count >= $end ) break; $this->display_element( $e,
   $empty_array, 1, 0, $args, $output ); } return $output; }
 *  /*
    * seperate elements into two buckets: top level and children elements * 
   children_elements is two dimensional array, eg. * children_elements[10][] contains
   all sub-elements whose parent is 10. */ $top_level_elements = array(); $children_elements
   = array(); foreach ( $elements as $e) { if ( 0 == $e->$parent_field ) $top_level_elements[]
   = $e; else $children_elements[ $e->$parent_field ][] = $e; }
 *  $total_top = count( $top_level_elements );
    if ( $paging ) $this->max_pages 
   = ceil($total_top / $per_page); else $end = $total_top;
 *  if ( !empty($args[0][‘reverse_top_level’]) ) {
    $top_level_elements = array_reverse(
   $top_level_elements ); $oldstart = $start; $start = $total_top – $end; $end =
   $total_top – $oldstart; } if ( !empty($args[0][‘reverse_children’]) ) { foreach(
   $children_elements as $parent => $children ) $children_elements[$parent] = array_reverse(
   $children ); }
 *  foreach ( $top_level_elements as $e ) {
    $count++;
 *  //for the last page, need to unset earlier children in order to keep track of
   orphans
    if ( $end >= $total_top && $count < $start ) $this->unset_children( 
   $e, $children_elements );
 *  if ( $count < $start )
    continue;
 *  if ( $count >= $end )
    break;
 *  $this->display_element( $e, $children_elements, $max_depth, 0, $args, $output);
   }
 *  if ( $end >= $total_top && count( $children_elements ) > 0 ) {
    $empty_array
   = array(); foreach ( $children_elements as $orphans ) foreach( $orphans as $op)
   $this->display_element( $op, $empty_array, 1, 0, $args, $output ); }
 *  return $output;
    }
 *  function get_number_of_root_elements( $elements ){
 *  $num = 0;
    $parent_field = $this->db_fields[‘parent’];
 *  foreach ( $elements as $e) {
    if ( 0 == $e->$parent_field ) $num++; } return
   $num; }
 *  // unset all the children for a given top level element
    function unset_children(
   $e, &$children_elements ){
 *  if ( !$e || !$children_elements )
    return;
 *  $id_field = $this->db_fields[‘id’];
    $id = $e->$id_field;
 *  if ( !empty($children_elements[$id]) && is_array($children_elements[$id]) )
   
   foreach ( (array) $children_elements[$id] as $child ) $this->unset_children( 
   $child, $children_elements );
 *  if ( isset($children_elements[$id]) )
    unset( $children_elements[$id] );
 *  }
    }
 * /**
    * Create HTML list of pages. * * [@package](https://wordpress.org/support/users/package/)
   WordPress * [@since](https://wordpress.org/support/users/since/) 2.1.0 * @uses
   Walker */ class Walker_Page extends Walker { /** * [@see](https://wordpress.org/support/users/see/)
   Walker::$tree_type * [@since](https://wordpress.org/support/users/since/) 2.1.0*
   [@var](https://wordpress.org/support/users/var/) string */ var $tree_type = ‘
   page’;
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::$db_fields *
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * [@todo](https://wordpress.org/support/users/todo/)
   Decouple this. * [@var](https://wordpress.org/support/users/var/) array */ var
   $db_fields = array (‘parent’ => ‘post_parent’, ‘id’ => ‘ID’);
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::start_lvl() *
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. * [@param](https://wordpress.org/support/users/param/)
   int $depth Depth of page. Used for padding. */ function start_lvl(&$output, $
   depth) { $indent = str_repeat(“\t”, $depth); $output .= “\n$indent
    - \n”;
       }
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::end_lvl() * 
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. * [@param](https://wordpress.org/support/users/param/)
   int $depth Depth of page. Used for padding. */ function end_lvl(&$output, $depth){
   $indent = str_repeat(“\t”, $depth); $output .= “$indent \n”; }
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::start_el() *
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. * [@param](https://wordpress.org/support/users/param/)
   object $page Page data object. * [@param](https://wordpress.org/support/users/param/)
   int $depth Depth of page. Used for padding. * [@param](https://wordpress.org/support/users/param/)
   int $current_page Page ID. * [@param](https://wordpress.org/support/users/param/)
   array $args */ function start_el(&$output, $page, $depth, $args, $current_page){
   if ( $depth ) $indent = str_repeat(“\t”, $depth); else $indent = ”;
 *  extract($args, EXTR_SKIP);
    $css_class = array(‘page_item’, ‘page-item-‘.$page-
   >ID); if ( !empty($current_page) ) { $_current_page = get_page( $current_page);
   if ( isset($_current_page->ancestors) && in_array($page->ID, (array) $_current_page-
   >ancestors) ) $css_class[] = ‘current_page_ancestor’; if ( $page->ID == $current_page)
   $css_class[] = ‘current_page_item’; elseif ( $_current_page && $page->ID == $
   _current_page->post_parent ) $css_class[] = ‘current_page_parent’; } elseif (
   $page->ID == get_option(‘page_for_posts’) ) { $css_class[] = ‘current_page_parent’;}
 *  $css_class = implode(‘ ‘, apply_filters(‘page_css_class’, $css_class, $page));
 * ‘;
 *  if ( !empty($show_date) ) {
    if ( ‘modified’ == $show_date ) $time = $page->
   post_modified; else $time = $page->post_date;
 *  $output .= ” ” . mysql2date($date_format, $time);
    } }
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::end_el() * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * * [@param](https://wordpress.org/support/users/param/) string $output
   Passed by reference. Used to append additional content. * [@param](https://wordpress.org/support/users/param/)
   object $page Page data object. Not used. * [@param](https://wordpress.org/support/users/param/)
   int $depth Depth of page. Not Used. */ function end_el(&$output, $page, $depth){
   $output .= “\n”; }
 * }
 * /**
    * Create HTML dropdown list of pages. * * [@package](https://wordpress.org/support/users/package/)
   WordPress * [@since](https://wordpress.org/support/users/since/) 2.1.0 * @uses
   Walker */ class Walker_PageDropdown extends Walker { /** * [@see](https://wordpress.org/support/users/see/)
   Walker::$tree_type * [@since](https://wordpress.org/support/users/since/) 2.1.0*
   [@var](https://wordpress.org/support/users/var/) string */ var $tree_type = ‘
   page’;
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::$db_fields *
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * [@todo](https://wordpress.org/support/users/todo/)
   Decouple this * [@var](https://wordpress.org/support/users/var/) array */ var
   $db_fields = array (‘parent’ => ‘post_parent’, ‘id’ => ‘ID’);
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::start_el() *
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. * [@param](https://wordpress.org/support/users/param/)
   object $page Page data object. * [@param](https://wordpress.org/support/users/param/)
   int $depth Depth of page in reference to parent pages. Used for padding. * [@param](https://wordpress.org/support/users/param/)
   array $args Uses ‘selected’ argument for selected page to set selected HTML attribute
   for option element. */ function start_el(&$output, $page, $depth, $args) { $pad
   = str_repeat(‘ ‘, $depth * 3);
 *  $output .= “\t<option class=\”level-$depth\” value=\”$page->ID\””;
    if ( $page-
   >ID == $args[‘selected’] ) $output .= ‘ selected=”selected”‘; $output .= ‘>’;
   $title = esc_html($page->post_title); $output .= “$pad$title”; $output .= “</
   option>\n”; } }
 * /**
    * Create HTML list of categories. * * [@package](https://wordpress.org/support/users/package/)
   WordPress * [@since](https://wordpress.org/support/users/since/) 2.1.0 * @uses
   Walker */ class Walker_Category extends Walker { /** * [@see](https://wordpress.org/support/users/see/)
   Walker::$tree_type * [@since](https://wordpress.org/support/users/since/) 2.1.0*
   [@var](https://wordpress.org/support/users/var/) string */ var $tree_type = ‘
   category’;
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::$db_fields *
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * [@todo](https://wordpress.org/support/users/todo/)
   Decouple this * [@var](https://wordpress.org/support/users/var/) array */ var
   $db_fields = array (‘parent’ => ‘parent’, ‘id’ => ‘term_id’);
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::start_lvl() *
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. * [@param](https://wordpress.org/support/users/param/)
   int $depth Depth of category. Used for tab indentation. * [@param](https://wordpress.org/support/users/param/)
   array $args Will only append content if style argument value is ‘list’. */ function
   start_lvl(&$output, $depth, $args) { if ( ‘list’ != $args[‘style’] ) return;
 *  $indent = str_repeat(“\t”, $depth);
    $output .= “$indent<ul class=’children’
   >\n”; }
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::end_lvl() * 
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. * [@param](https://wordpress.org/support/users/param/)
   int $depth Depth of category. Used for tab indentation. * [@param](https://wordpress.org/support/users/param/)
   array $args Will only append content if style argument value is ‘list’. */ function
   end_lvl(&$output, $depth, $args) { if ( ‘list’ != $args[‘style’] ) return;
 *  $indent = str_repeat(“\t”, $depth);
    $output .= “$indent\n”; }
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::start_el() *
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. * [@param](https://wordpress.org/support/users/param/)
   object $category Category data object. * [@param](https://wordpress.org/support/users/param/)
   int $depth Depth of category in reference to parents. * [@param](https://wordpress.org/support/users/param/)
   array $args */ function start_el(&$output, $category, $depth, $args) { extract(
   $args);
 *  $cat_name = esc_attr( $category->name);
    $cat_name = apply_filters( ‘list_cats’,
   $cat_name, $category ); $link = ‘term_id ) . ‘” ‘; if ( $use_desc_for_title =
   = 0 || empty($category->description) ) $link .= ‘title=”‘ . sprintf(__( ‘View
   all posts filed under %s’ ), $cat_name) . ‘”‘; else $link .= ‘title=”‘ . esc_attr(
   strip_tags( apply_filters( ‘category_description’, $category->description, $category))).‘”‘;
   $link .= ‘>’; $link .= $cat_name . ‘‘;
 *  if ( (! empty($feed_image)) || (! empty($feed)) ) {
    $link .= ‘ ‘;
 *  if ( empty($feed_image) )
    $link .= ‘(‘;
 * 
 *  if ( empty($feed) )
    $alt = ‘ alt=”‘ . sprintf(__( ‘Feed for all posts filed
   under %s’ ), $cat_name ) . ‘”‘; else { $title = ‘ title=”‘ . $feed . ‘”‘; $alt
   = ‘ alt=”‘ . $feed . ‘”‘; $name = $feed; $link .= $title; }
 *  $link .= ‘>’;
 *  if ( empty($feed_image) )
    $link .= $name; else $link .= “<img src=’$feed_image’
   $alt$title” . ‘ />’; $link .= ‘‘; if ( empty($feed_image) ) $link .= ‘)’; }
 *  if ( isset($show_count) && $show_count )
    $link .= ‘ (‘ . intval($category->
   count) . ‘)’;
 *  if ( isset($show_date) && $show_date ) {
    $link .= ‘ ‘ . gmdate(‘Y-m-d’, $category-
   >last_update_timestamp); }
 *  if ( isset($current_category) && $current_category )
    $_current_category = get_category(
   $current_category );
 *  if ( ‘list’ == $args[‘style’] ) {
    $output .= “\t<li”; $class = ‘cat-item cat-
   item-‘.$category->term_id; if ( isset($current_category) && $current_category&&(
   $category->term_id == $current_category) ) $class .= ‘ current-cat’; elseif (
   isset($_current_category) && $_current_category && ($category->term_id == $_current_category-
   >parent) ) $class .= ‘ current-cat-parent’; $output .= ‘ class=”‘.$class.'”‘;
   $output .= “>$link\n”; } else { $output .= “\t$link\n”; } }
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::end_el() * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * * [@param](https://wordpress.org/support/users/param/) string $output
   Passed by reference. Used to append additional content. * [@param](https://wordpress.org/support/users/param/)
   object $page Not used. * [@param](https://wordpress.org/support/users/param/)
   int $depth Depth of category. Not used. * [@param](https://wordpress.org/support/users/param/)
   array $args Only uses ‘list’ for whether should append to output. */ function
   end_el(&$output, $page, $depth, $args) { if ( ‘list’ != $args[‘style’] ) return;
 *  $output .= “\n”;
    }
 * }
 * /**
    * Create HTML dropdown list of Categories. * * [@package](https://wordpress.org/support/users/package/)
   WordPress * [@since](https://wordpress.org/support/users/since/) 2.1.0 * @uses
   Walker */ class Walker_CategoryDropdown extends Walker { /** * [@see](https://wordpress.org/support/users/see/)
   Walker::$tree_type * [@since](https://wordpress.org/support/users/since/) 2.1.0*
   [@var](https://wordpress.org/support/users/var/) string */ var $tree_type = ‘
   category’;
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::$db_fields *
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * [@todo](https://wordpress.org/support/users/todo/)
   Decouple this * [@var](https://wordpress.org/support/users/var/) array */ var
   $db_fields = array (‘parent’ => ‘parent’, ‘id’ => ‘term_id’);
 *  /**
    * [@see](https://wordpress.org/support/users/see/) Walker::start_el() *
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * * [@param](https://wordpress.org/support/users/param/)
   string $output Passed by reference. Used to append additional content. * [@param](https://wordpress.org/support/users/param/)
   object $category Category data object. * [@param](https://wordpress.org/support/users/param/)
   int $depth Depth of category. Used for padding. * [@param](https://wordpress.org/support/users/param/)
   array $args Uses ‘selected’, ‘show_count’, and ‘show_last_update’ keys, if they
   exist. */ function start_el(&$output, $category, $depth, $args) { $pad = str_repeat(‘‘,
   $depth * 3);
 *  $cat_name = apply_filters(‘list_cats’, $category->name, $category);
    $output.
   = “\t<option class=\”level-$depth\” value=\””.$category->term_id.”\””; if ( $
   category->term_id == $args[‘selected’] ) $output .= ‘ selected=”selected”‘; $
   output .= ‘>’; $output .= $pad.$cat_name; if ( $args[‘show_count’] ) $output .
   = ‘  (‘. $category->count .’)’; if ( $args[‘show_last_update’] ) { $format = ‘
   Y-m-d’; $output .= ‘  ‘ . gmdate($format, $category->last_update_timestamp); }
   $output .= “</option>\n”; } }
 * /**
    * Send XML response back to AJAX request. * * [@package](https://wordpress.org/support/users/package/)
   WordPress * [@since](https://wordpress.org/support/users/since/) 2.1.0 */ class
   WP_Ajax_Response { /** * Store XML responses to send. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * [@var](https://wordpress.org/support/users/var/) array * [@access](https://wordpress.org/support/users/access/)
   private */ var $responses = array();
 *  /**
    * PHP4 Constructor – Passes args to {@link WP_Ajax_Response::add()}. * *
   [@since](https://wordpress.org/support/users/since/) 2.1.0 * [@see](https://wordpress.org/support/users/see/)
   WP_Ajax_Response::add() * * [@param](https://wordpress.org/support/users/param/)
   string|array $args Optional. Will be passed to add() method. * [@return](https://wordpress.org/support/users/return/)
   WP_Ajax_Response */ function WP_Ajax_Response( $args = ” ) { if ( !empty($args))
   $this->add($args); }
 *  /**
    * Append to XML response based on given arguments. * * The arguments that
   can be passed in the $args parameter are below. It is * also possible to pass
   a WP_Error object in either the ‘id’ or ‘data’ * argument. The parameter isn’t
   actually optional, content should be given * in order to send the correct response.**‘
   what’ argument is a string that is the XMLRPC response type. * ‘action’ argument
   is a boolean or string that acts like a nonce. * ‘id’ argument can be WP_Error
   or an integer. * ‘old_id’ argument is false by default or an integer of the previous
   ID. * ‘position’ argument is an integer or a string with -1 = top, 1 = bottom,*
   html ID = after, -html ID = before. * ‘data’ argument is a string with the content
   or message. * ‘supplemental’ argument is an array of strings that will be children
   of * the supplemental element. * * [@since](https://wordpress.org/support/users/since/)
   2.1.0 * * [@param](https://wordpress.org/support/users/param/) string|array $
   args Override defaults. * [@return](https://wordpress.org/support/users/return/)
   string XML response. */ function add( $args = ” ) { $defaults = array( ‘what’
   => ‘object’, ‘action’ => false, ‘id’ => ‘0’, ‘old_id’ => false, ‘position’ =>
   1, ‘data’ => ”, ‘supplemental’ => array() );
 *  $r = wp_parse_args( $args, $defaults );
    extract( $r, EXTR_SKIP ); $position
   = preg_replace( ‘/[^a-z0-9:_-]/i’, ”, $position );
 *  if ( is_wp_error($id) ) {
    $data = $id; $id = 0; }
 *  $response = ”;
    if ( is_wp_error($data) ) { foreach ( (array) $data->get_error_codes()
   as $code ) { $response .= “<wp_error code=’$code’><![CDATA[” . $data->get_error_message(
   $code) . “]]></wp_error>”; if ( !$error_data = $data->get_error_data($code) )
   continue; $class = ”; if ( is_object($error_data) ) { $class = ‘ class=”‘ . get_class(
   $error_data) . ‘”‘; $error_data = get_object_vars($error_data); }
 *  $response .= “<wp_error_data code=’$code’$class>”;
 *  if ( is_scalar($error_data) ) {
    $response .= “<![CDATA[$error_data]]>”; } elseif(
   is_array($error_data) ) { foreach ( $error_data as $k => $v ) $response .= “<
   $k><![CDATA[$v]]></$k>”; }
 *  $response .= “</wp_error_data>”;
    } } else { $response = “<response_data><![
   CDATA[$data]]></response_data>”; }
 *  $s = ”;
    if ( is_array($supplemental) ) { foreach ( $supplemental as $k => $
   v ) $s .= “<$k><![CDATA[$v]]></$k>”; $s = “<supplemental>$s</supplemental>”; }
 *  if ( false === $action )
    $action = $_POST[‘action’];
 *  $x = ”;
    $x .= “<response action='{$action}_$id’>”; // The action attribute 
   in the xml output is formatted like a nonce action $x .= “<$what id=’$id’ ” .(
   false === $old_id ? ” : “old_id=’$old_id’ ” ) . “position=’$position’>”; $x .
   = $response; $x .= $s; $x .= “</$what>”; $x .= “</response>”;
 *  $this->responses[] = $x;
    return $x; }
 *  /**
    * Display XML formatted responses. * * Sets the content type header to 
   text/xml. * * [@since](https://wordpress.org/support/users/since/) 2.1.0 */ function
   send() { header(‘Content-Type: text/xml’); echo “<?xml version=’1.0′ standalone
   =’yes’?><wp_ajax>”; foreach ( (array) $this->responses as $response ) echo $response;
   echo ‘</wp_ajax>’; die(); } }
 * ?>
 *  Thread Starter [drewhaas](https://wordpress.org/support/users/drewhaas/)
 * (@drewhaas)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180534)
 * No luck on the rename dojo…
 *  [Brian Harris](https://wordpress.org/support/users/zgani/)
 * (@zgani)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180536)
 * [@drewhaas](https://wordpress.org/support/users/drewhaas/) You’ve only pasted
   upto line 1516 – at least thats how much I can see from here.
 * Mail me your copy of classes.php – I’ll have a look at it, do what I suggested
   and send it back, you upload and see if you get the same error.
 * [admin@bloginstallationservice.com](https://wordpress.org/support/topic/blog-down-help/admin@bloginstallationservice.com?output_format=md)
 *  [iridiax](https://wordpress.org/support/users/iridiax/)
 * (@iridiax)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180538)
 * Download WordPress, get a fresh classes.php from there, and upload it to replace
   the bad one.
 * [http://wordpress.org/download/](http://wordpress.org/download/)
 *  [Brian Harris](https://wordpress.org/support/users/zgani/)
 * (@zgani)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180539)
 * I would just replace the entire wp-includes file – the problem is now with the
   pluggable.php, same issue!
 *  Thread Starter [drewhaas](https://wordpress.org/support/users/drewhaas/)
 * (@drewhaas)
 * [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/#post-1180540)
 * Thanks Everyone!

Viewing 15 replies - 1 through 15 (of 16 total)

1 [2](https://wordpress.org/support/topic/blog-down-help/page/2/?output_format=md)
[→](https://wordpress.org/support/topic/blog-down-help/page/2/?output_format=md)

The topic ‘Blog Down! Help’ is closed to new replies.

 * In: [Fixing WordPress](https://wordpress.org/support/forum/how-to-and-troubleshooting/)
 * 16 replies
 * 6 participants
 * Last reply from: [Brian Harris](https://wordpress.org/support/users/zgani/)
 * Last activity: [16 years, 9 months ago](https://wordpress.org/support/topic/blog-down-help/page/2/#post-1180541)
 * Status: resolved

## Topics

### Topics with no replies

### Non-support topics

### Resolved topics

### Unresolved topics

### All topics
