<?php class Debug_Bar_WP_Query extends Debug_Bar_Panel { function init() { $this->title( __('WP Query', 'debug-bar') ); } function prerender() { $this->set_visible( defined('SAVEQUERIES') && SAVEQUERIES ); } function render() { global $template, $wp_query; $queried_object = get_queried_object(); if ( $queried_object && isset( $queried_object->post_type ) ) $post_type_object = get_post_type_object( $queried_object->post_type ); echo "<div id='debug-bar-wp-query'>"; echo '<h2><span>Queried Object ID:</span>' . get_queried_object_id() . "</h2>\n"; // Determine the query type. Follows the template loader order. $type = ''; if ( is_404() ) $type = '404'; elseif ( is_search() ) $type = 'Search'; elseif ( is_tax() ) $type = 'Taxonomy'; elseif ( is_front_page() ) $type = 'Front Page'; elseif ( is_home() ) $type = 'Home'; elseif ( is_attachment() ) $type = 'Attachment'; elseif ( is_single() ) $type = 'Single'; elseif ( is_page() ) $type = 'Page'; elseif ( is_category() ) $type = 'Category'; elseif ( is_tag() ) $type = 'Tag'; elseif ( is_author() ) $type = 'Author'; elseif ( is_date() ) $type = 'Date'; elseif ( is_archive() ) $type = 'Archive'; elseif ( is_paged() ) $type = 'Paged'; if ( !empty($type) ) echo '<h2><span>Query Type:</span>' . $type . "</h2>\n"; if ( !empty($template) ) echo '<h2><span>Query Template:</span>' . basename($template) . "</h2>\n"; $show_on_front = get_option( 'show_on_front' ); $page_on_front = get_option( 'page_on_front' ); $page_for_posts = get_option( 'page_for_posts' ); echo '<h2><span>Show on Front:</span>' . $show_on_front . "</h2>\n"; if ( 'page' == $show_on_front ) { echo '<h2><span>Page for Posts:</span>' . $page_for_posts . "</h2>\n"; echo '<h2><span>Page on Front:</span>' . $page_on_front . "</h2>\n"; } if ( isset( $post_type_object ) ) echo '<h2><span>Post Type:</span>' . $post_type_object->labels->singular_name . "</h2>\n"; echo '<div class="clear"></div>'; if ( empty($wp_query->query) ) $query = 'None'; else $query = http_build_query( $wp_query->query ); echo '<h3>Query Arguments:</h3>'; echo '<p>' . esc_html( $query ) . '</p>'; if ( ! empty($wp_query->request) ) { echo '<h3>Query SQL:</h3>'; echo '<p>' . esc_html( $wp_query->request ) . '</p>'; } if ( ! is_null( $queried_object ) ) { echo '<h3>Queried Object:</h3>'; echo '<ol class="debug-bar-wp-query-list">'; foreach ($queried_object as $key => $value) { // See: http://wordpress.org/support/topic/plugin-debug-bar-custom-post-type-archive-catchable-fatal-error // TODO: Fix better if ( is_object( $value ) ) { echo '<li>' . $key . ' => <ol>'; foreach ( $value as $_key => $_value ) echo '<li>' . $_key . ' => ' . $_value . '</li>'; echo '</ol></li>'; } else { echo '<li>' . $key . ' => ' . $value . '</li>'; } } echo '</ol>'; } echo '</div>'; } }