<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul, pre { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[15531] trunk/wp-includes: is_* WP_Query methods.</title>
</head>
<body>

<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/15531">15531</a></dd>
<dt>Author</dt> <dd>ryan</dd>
<dt>Date</dt> <dd>2010-08-25 18:05:33 +0000 (Wed, 25 Aug 2010)</dd>
</dl>

<h3>Log Message</h3>
<pre>is_* WP_Query methods. Props mdawaffe. fixes <a href="http://trac.wordpress.org/ticket/14494">#14494</a></pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpincludesdeprecatedphp">trunk/wp-includes/deprecated.php</a></li>
<li><a href="#trunkwpincludesqueryphp">trunk/wp-includes/query.php</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpincludesdeprecatedphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/deprecated.php (15530 => 15531)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/deprecated.php        2010-08-25 01:59:13 UTC (rev 15530)
+++ trunk/wp-includes/deprecated.php        2010-08-25 18:05:33 UTC (rev 15531)
</span><span class="lines">@@ -2535,3 +2535,24 @@
</span><span class="cx">         return term_exists( $term, $taxonomy, $parent );
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+/**
+ * Is the current admin page generated by a plugin?
+ *
+ * @since 1.5.0
+ * @deprecated 3.1
+ * @deprecated Use global $plugin_page and/or get_plugin_page_hookname() hooks.
+ *
+ * @global $plugin_page
+ *
+ * @return bool
+ */
+function is_plugin_page() {
+        _deprecated_function( __FUNCTION__, '3.1'  );
+
+        global $plugin_page;
+
+        if ( isset($plugin_page) )
+                return true;
+
+        return false;
+}
</ins></span></pre></div>
<a id="trunkwpincludesqueryphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/query.php (15530 => 15531)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/query.php        2010-08-25 01:59:13 UTC (rev 15530)
+++ trunk/wp-includes/query.php        2010-08-25 18:05:33 UTC (rev 15531)
</span><span class="lines">@@ -98,182 +98,122 @@
</span><span class="cx">  */
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Is query requesting an archive page.
</del><ins>+ * Is the query for an archive page?
</ins><span class="cx">  *
</span><ins>+ * Month, Year, Category, Author, ...
+ *
+ * @see WP_Query::is_archive()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><del>- * @return bool True if page is archive.
</del><ins>+ * @return bool
</ins><span class="cx">  */
</span><span class="cx"> function is_archive() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_archive;
</del><ins>+        return $wp_query-&gt;is_archive();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Is query requesting an attachment page.
</del><ins>+ * Is the query for an attachment page?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_attachment()
</ins><span class="cx">  * @since 2.0.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><del>- * @return bool True if page is attachment.
</del><ins>+ * @return bool
</ins><span class="cx">  */
</span><span class="cx"> function is_attachment() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_attachment;
</del><ins>+        return $wp_query-&gt;is_attachment();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Is query requesting an author page.
</del><ins>+ * Is the query for an author archive page?
</ins><span class="cx">  *
</span><del>- * If the $author parameter is specified then the check will be expanded to
- * include whether the queried author matches the one given in the parameter.
- * You can match against integers and against strings.
</del><ins>+ * If the $author parameter is specified, this function will additionally
+ * check if the query is for one of the authors specified.
</ins><span class="cx">  *
</span><del>- * If matching against an integer, the ID should be used of the author for the
- * test. If the $author is an ID and matches the author page user ID, then
- * 'true' will be returned.
- *
- * If matching against strings, then the test will be matched against both the
- * nickname and user nicename and will return true on success.
- *
</del><ins>+ * @see WP_Query::is_author()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><del>- * @param string|int $author Optional. Is current page this author.
- * @return bool True if page is author or $author (if set).
</del><ins>+ * @param mixed $author Optional. User ID, nickname, nicename, or array of User IDs, nicknames, and nicenames
+ * @return bool
</ins><span class="cx">  */
</span><del>-function is_author($author = '') {
</del><ins>+function is_author( $author = '' ) {
</ins><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        if ( !$wp_query-&gt;is_author )
-                return false;
-
-        if ( empty($author) )
-                return true;
-
-        $author_obj = $wp_query-&gt;get_queried_object();
-
-        $author = (array) $author;
-
-        if ( in_array( $author_obj-&gt;ID, $author ) )
-                return true;
-        elseif ( in_array( $author_obj-&gt;nickname, $author ) )
-                return true;
-        elseif ( in_array( $author_obj-&gt;user_nicename, $author ) )
-                return true;
-
-        return false;
</del><ins>+        return $wp_query-&gt;is_author( $author );
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether current page query contains a category name or given category name.
</del><ins>+ * Is the query for a category archive page?
</ins><span class="cx">  *
</span><del>- * The category list can contain category IDs, names, or category slugs. If any
- * of them are part of the query, then it will return true.
</del><ins>+ * If the $category parameter is specified, this function will additionally
+ * check if the query is for one of the categories specified.
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_category()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><del>- * @param string|array $category Optional.
</del><ins>+ * @param mixed $category Optional. Category ID, name, slug, or array of Category IDs, names, and slugs.
</ins><span class="cx">  * @return bool
</span><span class="cx">  */
</span><del>-function is_category($category = '') {
</del><ins>+function is_category( $category = '' ) {
</ins><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        if ( !$wp_query-&gt;is_category )
-                return false;
-
-        if ( empty($category) )
-                return true;
-
-        $cat_obj = $wp_query-&gt;get_queried_object();
-
-        $category = (array) $category;
-
-        if ( in_array( $cat_obj-&gt;term_id, $category ) )
-                return true;
-        elseif ( in_array( $cat_obj-&gt;name, $category ) )
-                return true;
-        elseif ( in_array( $cat_obj-&gt;slug, $category ) )
-                return true;
-
-        return false;
</del><ins>+        return $wp_query-&gt;is_category( $category );
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether the current page query has the given tag slug or contains tag.
</del><ins>+ * Is the query for a tag archive page?
</ins><span class="cx">  *
</span><ins>+ * If the $tag parameter is specified, this function will additionally
+ * check if the query is for one of the tags specified.
+ *
+ * @see WP_Query::is_tag()
</ins><span class="cx">  * @since 2.3.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><del>- * @param string|array $slug Optional. Single tag or list of tags to check for.
</del><ins>+ * @param mixed $slug Optional. Tag slug or array of slugs.
</ins><span class="cx">  * @return bool
</span><span class="cx">  */
</span><span class="cx"> function is_tag( $slug = '' ) {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        if ( !$wp_query-&gt;is_tag )
-                return false;
-
-        if ( empty( $slug ) )
-                return true;
-
-        $tag_obj = $wp_query-&gt;get_queried_object();
-
-        $slug = (array) $slug;
-
-        if ( in_array( $tag_obj-&gt;slug, $slug ) )
-                return true;
-
-        return false;
</del><ins>+        return $wp_query-&gt;is_tag( $slug );
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether the current query is for the given taxonomy and/or term.
</del><ins>+ * Is the query for a taxonomy archive page?
</ins><span class="cx">  *
</span><del>- * If no taxonomy argument is set, returns true if any taxonomy is queried.
- * If the taxonomy argument is passed but no term argument, returns true
- *    if the taxonomy or taxonomies in the argument are being queried.
- * If both taxonomy and term arguments are passed, returns true
- *    if the current query is for a term contained in the terms argument
- *    which has a taxonomy contained in the taxonomy argument.
</del><ins>+ * If the $taxonomy parameter is specified, this function will additionally
+ * check if the query is for that specific $taxonomy.
</ins><span class="cx">  *
</span><ins>+ * If the $term parameter is specified in addition to the $taxonomy parameter,
+ * this function will additionally check if the query is for one of the terms
+ * specified.
+ *
+ * @see WP_Query::is_tax()
</ins><span class="cx">  * @since 2.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><del>- * @param string|array $taxonomy Optional. Taxonomy slug or slugs to check in current query.
- * @param int|array|string $term. Optional. A single or array of, The term's ID, Name or Slug
</del><ins>+ * @param mixed $taxonomy Optional. Taxonomy slug or slugs.
+ * @param mixed $term. Optional. Term ID, name, slug or array of Term IDs, names, and slugs.
</ins><span class="cx">  * @return bool
</span><span class="cx">  */
</span><span class="cx"> function is_tax( $taxonomy = '', $term = '' ) {
</span><span class="cx">         global $wp_query, $wp_taxonomies;
</span><span class="cx"> 
</span><del>-        $queried_object = $wp_query-&gt;get_queried_object();
-        $tax_array = array_intersect(array_keys($wp_taxonomies), (array) $taxonomy);
-        $term_array = (array) $term;
-
-        if ( !$wp_query-&gt;is_tax )
-                return false;
-
-        if ( empty( $taxonomy ) )
-                return true;
-
-        if ( empty( $term ) ) // Only a Taxonomy provided
-                return isset($queried_object-&gt;taxonomy) &amp;&amp; count( $tax_array ) &amp;&amp; in_array($queried_object-&gt;taxonomy, $tax_array);
-
-        return isset($queried_object-&gt;term_id) &amp;&amp;
-                        count(array_intersect(
-                                array($queried_object-&gt;term_id, $queried_object-&gt;name, $queried_object-&gt;slug),
-                                $term_array
-                        ));
</del><ins>+        return $wp_query-&gt;is_tax( $taxonomy, $term );
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><span class="cx">  * Whether the current URL is within the comments popup window.
</span><span class="cx">  *
</span><ins>+ * @see WP_Query::is_comments_popup()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -282,12 +222,13 @@
</span><span class="cx"> function is_comments_popup() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_comments_popup;
</del><ins>+        return $wp_query-&gt;is_comments_popup();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether current URL is based on a date.
</del><ins>+ * Is the query for a date archive?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_date()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -296,12 +237,13 @@
</span><span class="cx"> function is_date() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_date;
</del><ins>+        return $wp_query-&gt;is_date();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether current blog URL contains a day.
</del><ins>+ * Is the query for a day archive?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_day()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -310,12 +252,13 @@
</span><span class="cx"> function is_day() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_day;
</del><ins>+        return $wp_query-&gt;is_day();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether current page query is feed URL.
</del><ins>+ * Is the query for a feed?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_feed()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -324,12 +267,13 @@
</span><span class="cx"> function is_feed() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_feed;
</del><ins>+        return $wp_query-&gt;is_feed();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether current page query is comment feed URL.
</del><ins>+ * Is the query for a comments feed?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_comments_feed()
</ins><span class="cx">  * @since 3.0.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -338,12 +282,22 @@
</span><span class="cx"> function is_comment_feed() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_comment_feed;
</del><ins>+        return $wp_query-&gt;is_comment_feed();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether current page query is the front of the site.
</del><ins>+ * Is the query for the front page of the site?
</ins><span class="cx">  *
</span><ins>+ * This is for what is displayed at your site's main URL.
+ *
+ * Depends on the site's &quot;Front page displays&quot; Reading Settings 'show_on_front' and 'page_on_front'.
+ *
+ * If you set a static page for the front page of your site, this function will return
+ * true when viewing that page.
+ *
+ * Otherwise the same as @see is_home()
+ *
+ * @see WP_Query::is_front_page()
</ins><span class="cx">  * @since 2.5.0
</span><span class="cx">  * @uses is_home()
</span><span class="cx">  * @uses get_option()
</span><span class="lines">@@ -351,22 +305,24 @@
</span><span class="cx">  * @return bool True, if front of site.
</span><span class="cx">  */
</span><span class="cx"> function is_front_page() {
</span><del>-        // most likely case
-        if ( 'posts' == get_option('show_on_front') &amp;&amp; is_home() )
-                return true;
-        elseif ( 'page' == get_option('show_on_front') &amp;&amp; get_option('page_on_front') &amp;&amp; is_page(get_option('page_on_front')) )
-                return true;
-        else
-                return false;
</del><ins>+        global $wp_query;
+
+        return $wp_query-&gt;is_front_page();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether current page view is the blog homepage.
</del><ins>+ * Is the query for the blog homepage?
</ins><span class="cx">  *
</span><del>- * This is the page which is showing the time based blog content of your site
- * so if you set a static page for the front page of your site then this will
- * only be true on the page which you set as the &quot;Posts page&quot; in Reading Settings.
</del><ins>+ * This is the page which shows the time based blog content of your site.
</ins><span class="cx">  *
</span><ins>+ * Depends on the site's &quot;Front page displays&quot; Reading Settings 'show_on_front' and 'page_for_posts'.
+ *
+ * If you set a static page for the front page of your site, this function will return
+ * true only on the page you set as the &quot;Posts page&quot;.
+ *
+ * @see is_front_page()
+ *
+ * @see WP_Query::is_home()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -375,12 +331,13 @@
</span><span class="cx"> function is_home() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_home;
</del><ins>+        return $wp_query-&gt;is_home();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether current page query contains a month.
</del><ins>+ * Is the query for a month archive?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_month()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -389,52 +346,35 @@
</span><span class="cx"> function is_month() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_month;
</del><ins>+        return $wp_query-&gt;is_month();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether query is page or contains given page(s).
</del><ins>+ * Is the query for a single Page?
</ins><span class="cx">  *
</span><del>- * Calls the function without any parameters will only test whether the current
- * query is of the page type. Either a list or a single item can be tested
- * against for whether the query is a page and also is the value or one of the
- * values in the page parameter.
</del><ins>+ * If the $page parameter is specified, this function will additionally
+ * check if the query is for one of the Pages specified.
</ins><span class="cx">  *
</span><del>- * The parameter can contain the page ID, page title, or page name. The
- * parameter can also be an array of those three values.
</del><ins>+ * @see is_single()
+ * @see is_singular()
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_single()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><del>- * @param mixed $page Either page or list of pages to test against.
</del><ins>+ * @param mixed $page Page ID, title, slug, or array of Page IDs, titles, and slugs.
</ins><span class="cx">  * @return bool
</span><span class="cx">  */
</span><del>-function is_page($page = '') {
</del><ins>+function is_page( $page = '' ) {
</ins><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        if ( !$wp_query-&gt;is_page )
-                return false;
-
-        if ( empty($page) )
-                return true;
-
-        $page_obj = $wp_query-&gt;get_queried_object();
-
-        $page = (array) $page;
-
-        if ( in_array( $page_obj-&gt;ID, $page ) )
-                return true;
-        elseif ( in_array( $page_obj-&gt;post_title, $page ) )
-                return true;
-        else if ( in_array( $page_obj-&gt;post_name, $page ) )
-                return true;
-
-        return false;
</del><ins>+        return $wp_query-&gt;is_page( $page );
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether query contains multiple pages for the results.
</del><ins>+ * Is the query for paged result and not for the first page?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_paged()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -443,32 +383,13 @@
</span><span class="cx"> function is_paged() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_paged;
</del><ins>+        return $wp_query-&gt;is_paged();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether the current page was created by a plugin.
</del><ins>+ * Is the query for a post or page preview?
</ins><span class="cx">  *
</span><del>- * The plugin can set this by using the global $plugin_page and setting it to
- * true.
- *
- * @since 1.5.0
- * @global bool $plugin_page Used by plugins to tell the query that current is a plugin page.
- *
- * @return bool
- */
-function is_plugin_page() {
-        global $plugin_page;
-
-        if ( isset($plugin_page) )
-                return true;
-
-        return false;
-}
-
-/**
- * Whether the current query is preview of post or page.
- *
</del><ins>+ * @see WP_Query::is_preview()
</ins><span class="cx">  * @since 2.0.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -477,12 +398,13 @@
</span><span class="cx"> function is_preview() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_preview;
</del><ins>+        return $wp_query-&gt;is_preview();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether the current query post is robots.
</del><ins>+ * Is the query for the robots file?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_robots()
</ins><span class="cx">  * @since 2.1.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -491,12 +413,13 @@
</span><span class="cx"> function is_robots() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_robots;
</del><ins>+        return $wp_query-&gt;is_robots();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether current query is the result of a user search.
</del><ins>+ * Is the query for a search?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_search()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -505,70 +428,59 @@
</span><span class="cx"> function is_search() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_search;
</del><ins>+        return $wp_query-&gt;is_search();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether the current page query is single page.
</del><ins>+ * Is the query for a single post?
</ins><span class="cx">  *
</span><del>- * The parameter can contain the post ID, post title, or post name. The
- * parameter can also be an array of those three values.
</del><ins>+ * If the $post parameter is specified, this function will additionally
+ * check if the query is for one of the Posts specified.
</ins><span class="cx">  *
</span><del>- * This applies to other post types, attachments, pages, posts. Just means that
- * the current query has only a single object.
</del><ins>+ * Can also be used for attachments or any other post type except pages.
</ins><span class="cx">  *
</span><ins>+ * @see is_page()
+ * @see is_singular()
+ *
+ * @see WP_Query::is_single()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><del>- * @param mixed $post Either post or list of posts to test against.
</del><ins>+ * @param mixed $post Post ID, title, slug, or array of Post IDs, titles, and slugs.
</ins><span class="cx">  * @return bool
</span><span class="cx">  */
</span><del>-function is_single($post = '') {
</del><ins>+function is_single( $post = '' ) {
</ins><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        if ( !$wp_query-&gt;is_single )
-                return false;
-
-        if ( empty($post) )
-                return true;
-
-        $post_obj = $wp_query-&gt;get_queried_object();
-
-        $post = (array) $post;
-
-        if ( in_array( $post_obj-&gt;ID, $post ) )
-                return true;
-        elseif ( in_array( $post_obj-&gt;post_title, $post ) )
-                return true;
-        elseif ( in_array( $post_obj-&gt;post_name, $post ) )
-                return true;
-
-        return false;
</del><ins>+        return $wp_query-&gt;is_single( $post );
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether is single post, is a page, or is an attachment.
</del><ins>+ * Is the query for a single post of any post type (post, attachment, page, ... )?
</ins><span class="cx">  *
</span><ins>+ * If the $post_types parameter is specified, this function will additionally
+ * check if the query is for one of the Posts Types specified.
+ *
+ * @see is_page()
+ * @see is_single()
+ *
+ * @see WP_Query::is_singular()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><del>- * @param string|array $post_types Optional. Post type or types to check in current query.
</del><ins>+ * @param mixed $post_types Optional. Post Type or array of Post Types
</ins><span class="cx">  * @return bool
</span><span class="cx">  */
</span><del>-function is_singular($post_types = '') {
</del><ins>+function is_singular( $post_types = '' ) {
</ins><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        if ( empty($post_types) || !$wp_query-&gt;is_singular )
-                return $wp_query-&gt;is_singular;
-
-        $post_obj = $wp_query-&gt;get_queried_object();
-
-        return in_array($post_obj-&gt;post_type, (array) $post_types);
</del><ins>+        return $wp_query-&gt;is_singular( $post_types );
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether the query contains a time.
</del><ins>+ * Is the query for a specific time?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_time()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -577,12 +489,13 @@
</span><span class="cx"> function is_time() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_time;
</del><ins>+        return $wp_query-&gt;is_time();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether the query is a trackback.
</del><ins>+ * Is the query for a trackback endpoint call?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_trackback()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -591,12 +504,13 @@
</span><span class="cx"> function is_trackback() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_trackback;
</del><ins>+        return $wp_query-&gt;is_trackback();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether the query contains a year.
</del><ins>+ * Is the query for a specific year?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_year()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><span class="lines">@@ -605,21 +519,22 @@
</span><span class="cx"> function is_year() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_year;
</del><ins>+        return $wp_query-&gt;is_year();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span><del>- * Whether current page query is a 404 and no results for WordPress query.
</del><ins>+ * Is the query a 404 (returns no results)?
</ins><span class="cx">  *
</span><ins>+ * @see WP_Query::is_404()
</ins><span class="cx">  * @since 1.5.0
</span><span class="cx">  * @uses $wp_query
</span><span class="cx">  *
</span><del>- * @return bool True, if nothing is found matching WordPress Query.
</del><ins>+ * @return bool
</ins><span class="cx">  */
</span><span class="cx"> function is_404() {
</span><span class="cx">         global $wp_query;
</span><span class="cx"> 
</span><del>-        return $wp_query-&gt;is_404;
</del><ins>+        return $wp_query-&gt;is_404();
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /*
</span><span class="lines">@@ -2787,6 +2702,459 @@
</span><span class="cx">                         $this-&gt;query($query);
</span><span class="cx">                 }
</span><span class="cx">         }
</span><ins>+
+        /**
+          * Is the query for an archive page?
+          *
+          * Month, Year, Category, Author, ...
+          *
+          * @since 3.1.0
+          *
+          * @return bool
+          */
+        function is_archive() {
+                return (bool) $this-&gt;is_archive;
+        }
+
+        /**
+         * Is the query for an attachment page?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_attachment() {
+                return (bool) $this-&gt;is_attachment;
+        }
+
+        /**
+         * Is the query for an author archive page?
+         *
+         * If the $author parameter is specified, this function will additionally
+         * check if the query is for one of the authors specified.
+         *
+         * @since 3.1.0
+         *
+         * @param mixed $author Optional. User ID, nickname, nicename, or array of User IDs, nicknames, and nicenames
+         * @return bool
+         */
+        function is_author( $author = '' ) {
+                if ( !$this-&gt;is_author )
+                        return false;
+
+                if ( empty($author) )
+                        return true;
+
+                $author_obj = $this-&gt;get_queried_object();
+
+                $author = (array) $author;
+
+                if ( in_array( $author_obj-&gt;ID, $author ) )
+                        return true;
+                elseif ( in_array( $author_obj-&gt;nickname, $author ) )
+                        return true;
+                elseif ( in_array( $author_obj-&gt;user_nicename, $author ) )
+                        return true;
+
+                return false;
+        }
+
+        /**
+         * Is the query for a category archive page?
+         *
+         * If the $category parameter is specified, this function will additionally
+         * check if the query is for one of the categories specified.
+         *
+         * @since 3.1.0
+         *
+         * @param mixed $category Optional. Category ID, name, slug, or array of Category IDs, names, and slugs.
+         * @return bool
+         */
+        function is_category( $category = '' ) {
+                if ( !$this-&gt;is_category )
+                        return false;
+
+                if ( empty($category) )
+                        return true;
+
+                $cat_obj = $this-&gt;get_queried_object();
+
+                $category = (array) $category;
+
+                if ( in_array( $cat_obj-&gt;term_id, $category ) )
+                        return true;
+                elseif ( in_array( $cat_obj-&gt;name, $category ) )
+                        return true;
+                elseif ( in_array( $cat_obj-&gt;slug, $category ) )
+                        return true;
+
+                return false;
+        }
+
+        /**
+         * Is the query for a tag archive page?
+         *
+         * If the $tag parameter is specified, this function will additionally
+         * check if the query is for one of the tags specified.
+         *
+         * @since 3.1.0
+         *
+         * @param mixed $slug Optional. Tag slug or array of slugs.
+         * @return bool
+         */
+        function is_tag( $slug = '' ) {
+                if ( !$this-&gt;is_tag )
+                        return false;
+
+                if ( empty( $slug ) )
+                        return true;
+
+                $tag_obj = $this-&gt;get_queried_object();
+
+                $slug = (array) $slug;
+
+                if ( in_array( $tag_obj-&gt;slug, $slug ) )
+                        return true;
+
+                return false;
+        }
+
+        /**
+         * Is the query for a taxonomy archive page?
+         *
+         * If the $taxonomy parameter is specified, this function will additionally
+         * check if the query is for that specific $taxonomy.
+         *
+         * If the $term parameter is specified in addition to the $taxonomy parameter,
+         * this function will additionally check if the query is for one of the terms
+         * specified.
+         *
+         * @since 3.1.0
+         *
+         * @param mixed $taxonomy Optional. Taxonomy slug or slugs.
+         * @param mixed $term. Optional. Term ID, name, slug or array of Term IDs, names, and slugs.
+         * @return bool
+         */
+        function is_tax( $taxonomy = '', $term = '' ) {
+                global $wp_taxonomies;
+
+                if ( !$this-&gt;is_tax )
+                        return false;
+
+                if ( empty( $taxonomy ) )
+                        return true;
+
+                $queried_object = $this-&gt;get_queried_object();
+                $tax_array = array_intersect( array_keys( $wp_taxonomies ), (array) $taxonomy );
+                $term_array = (array) $term;
+
+                if ( empty( $term ) ) // Only a Taxonomy provided
+                        return isset( $queried_object-&gt;taxonomy ) &amp;&amp; count( $tax_array ) &amp;&amp; in_array( $queried_object-&gt;taxonomy, $tax_array );
+
+                return isset( $queried_object-&gt;term_id ) &amp;&amp;
+                        count( array_intersect(
+                                array( $queried_object-&gt;term_id, $queried_object-&gt;name, $queried_object-&gt;slug ),
+                                $term_array
+                        ) );
+        }
+
+        /**
+         * Whether the current URL is within the comments popup window.
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_comments_popup() {
+                return (bool) $this-&gt;is_comments_popup;
+        }
+
+        /**
+         * Is the query for a date archive?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_date() {
+                return (bool) $this-&gt;is_date;
+        }
+
+
+        /**
+         * Is the query for a day archive?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_day() {
+                return (bool) $this-&gt;is_day;
+        }
+
+        /**
+         * Is the query for a feed?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_feed() {
+                return (bool) $this-&gt;is_feed;
+        }
+
+        /**
+         * Is the query for a comments feed?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_comment_feed() {
+                return (bool) $this-&gt;is_comment_feed;
+        }
+
+        /**
+         * Is the query for the front page of the site?
+         *
+         * This is for what is displayed at your site's main URL.
+         *
+         * Depends on the site's &quot;Front page displays&quot; Reading Settings 'show_on_front' and 'page_on_front'.
+         *
+         * If you set a static page for the front page of your site, this function will return
+         * true when viewing that page.
+         *
+         * Otherwise the same as @see WP_Query::is_home()
+         *
+         * @since 3.1.0
+         * @uses is_home()
+         * @uses get_option()
+         *
+         * @return bool True, if front of site.
+         */
+        function is_front_page() {
+                // most likely case
+                if ( 'posts' == get_option( 'show_on_front') &amp;&amp; $this-&gt;is_home() )
+                        return true;
+                elseif ( 'page' == get_option( 'show_on_front') &amp;&amp; get_option( 'page_on_front' ) &amp;&amp; $this-&gt;is_page( get_option( 'page_on_front' ) ) )
+                        return true;
+                else
+                        return false;
+        }
+
+        /**
+         * Is the query for the blog homepage?
+         *
+         * This is the page which shows the time based blog content of your site.
+         *
+         * Depends on the site's &quot;Front page displays&quot; Reading Settings 'show_on_front' and 'page_for_posts'.
+         *
+         * If you set a static page for the front page of your site, this function will return
+         * true only on the page you set as the &quot;Posts page&quot;.
+         *
+         * @see WP_Query::is_front_page()
+         *
+         * @since 3.1.0
+         *
+         * @return bool True if blog view homepage.
+         */
+        function is_home() {
+                return (bool) $this-&gt;is_home;
+        }
+
+        /**
+         * Is the query for a month archive?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_month() {
+                return (bool) $this-&gt;is_month;
+        }
+
+        /**
+         * Is the query for a single Page?
+         *
+         * If the $page parameter is specified, this function will additionally
+         * check if the query is for one of the Pages specified.
+         *
+         * @see WP_Query::is_single()
+         * @see WP_Query::is_singular()
+         *
+         * @since 3.1.0
+         *
+         * @param mixed $page Page ID, title, slug, or array of Page IDs, titles, and slugs.
+         * @return bool
+         */
+        function is_page( $page = '' ) {
+                if ( !$this-&gt;is_page )
+                        return false;
+
+                if ( empty( $page ) )
+                        return true;
+
+                $page_obj = $this-&gt;get_queried_object();
+
+                $page = (array) $page;
+
+                if ( in_array( $page_obj-&gt;ID, $page ) )
+                        return true;
+                elseif ( in_array( $page_obj-&gt;post_title, $page ) )
+                        return true;
+                else if ( in_array( $page_obj-&gt;post_name, $page ) )
+                        return true;
+
+                return false;
+        }
+
+        /**
+         * Is the query for paged result and not for the first page?
+         *
+         * @since 3.1.0
+         *
+         * @return bool                                                                  
+         */
+        function is_paged() {
+                return (bool) $this-&gt;is_paged;
+        }
+
+        /**
+         * Is the query for a post or page preview?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_preview() {
+                return (bool) $this-&gt;is_preview;
+        }
+
+        /**
+         * Is the query for the robots file?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_robots() {
+                return (bool) $this-&gt;is_robots;
+        }
+
+        /**
+         * Is the query for a search?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_search() {
+                return (bool) $this-&gt;is_search;
+        }
+
+        /**
+         * Is the query for a single post?
+         *
+         * If the $post parameter is specified, this function will additionally
+         * check if the query is for one of the Posts specified.
+         *
+         * Can also be used for attachments or any other post type except pages.
+         *
+         * @see WP_Query::is_page()
+         * @see WP_Query::is_singular()
+         *
+         * @since 3.1.0
+         *
+         * @param mixed $post Post ID, title, slug, or array of Post IDs, titles, and slugs.
+         * @return bool
+         */
+        function is_single( $post = '' ) {
+                if ( !$this-&gt;is_single )
+                        return false;
+
+                if ( empty($post) )
+                        return true;
+
+                $post_obj = $this-&gt;get_queried_object();
+
+                $post = (array) $post;
+
+                if ( in_array( $post_obj-&gt;ID, $post ) )
+                        return true;
+                elseif ( in_array( $post_obj-&gt;post_title, $post ) )
+                        return true;
+                elseif ( in_array( $post_obj-&gt;post_name, $post ) )
+                        return true;
+
+                return false;
+        }
+
+        /**
+         * Is the query for a single post of any post type (post, attachment, page, ... )?
+         *
+         * If the $post_types parameter is specified, this function will additionally
+         * check if the query is for one of the Posts Types specified.
+         *
+         * @see WP_Query::is_page()
+         * @see WP_Query::is_single()
+         *
+         * @since 3.1.0
+         *
+         * @param mixed $post_types Optional. Post Type or array of Post Types
+         * @return bool
+         */
+        function is_singular( $post_types = '' ) {
+                if ( empty( $post_types ) || !$this-&gt;is_singular )
+                        return $this-&gt;is_singular;
+
+                $post_obj = $this-&gt;get_queried_object();
+
+                return in_array( $post_obj-&gt;post_type, (array) $post_types );
+        }
+
+        /**
+         * Is the query for a specific time?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_time() {
+                return (bool) $this-&gt;is_time;
+        }
+
+        /**
+         * Is the query for a trackback endpoint call?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_trackback() {
+                return (bool) $this-&gt;is_trackback;
+        }
+
+        /**
+         * Is the query for a specific year?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_year() {
+                return (bool) $this-&gt;is_year;
+        }
+
+        /**
+         * Is the query a 404 (returns no results)?
+         *
+         * @since 3.1.0
+         *
+         * @return bool
+         */
+        function is_404() {
+                return (bool) $this-&gt;is_404;
+        }
</ins><span class="cx"> }
</span><span class="cx"> 
</span><span class="cx"> /**
</span></span></pre>
</div>
</div>

</body>
</html>