function wp_get_http_headers( $url, $red = 1 ) { global $wp_version; @set_time_limit( 60 ); if ( $red > 5 ) return false; $parts = parse_url( $url ); $file = $parts['path'] . ($parts['query'] ? '?'.$parts['query'] : ''); $host = $parts['host']; if ( !isset( $parts['port'] ) ) $parts['port'] = 80; $head = "HEAD $file HTTP/1.1\r\nHOST: $host\r\nUser-Agent: WordPress/" . $wp_version . "\r\n\r\n"; $fp = @fsockopen($host, $parts['port'], $err_num, $err_msg, 3); if ( !$fp ) return false; $response = ''; fputs( $fp, $head ); while ( !feof( $fp ) && strpos( $response, "\r\n\r\n" ) == false ) $response .= fgets( $fp, 2048 ); fclose( $fp ); preg_match_all('/(.*?): (.*)\r/', $response, $matches); $count = count($matches[1]); for ( $i = 0; $i < $count; $i++) { $key = strtolower($matches[1][$i]); $headers["$key"] = $matches[2][$i]; } $code = preg_replace('/.*?(\d{3}).*/i', '$1', $response); $headers['status_code'] = $code; if ( '302' == $code || '301' == $code ) return wp_get_http_headers( $url, ++$red ); preg_match('/.*([0-9]{3}).*/', $response, $return); $headers['response'] = $return[1]; // HTTP response code eg 204, 200, 404 return $headers; } // Deprecated. Use the new post loop. function start_wp() { global $wp_query, $post; // Since the old style loop is being used, advance the query iterator here. $wp_query->next_post(); setup_postdata($post); }