WordPress.org

Make WordPress Core

Ticket #12891: query.php.r15471.2.2.diff

File query.php.r15471.2.2.diff, 44.3 KB (added by nacin, 3 years ago)
  • wp-includes/query.php

     
    2727        return $wp_query->get($var); 
    2828} 
    2929 
     30 
    3031/** 
     32 * Retrieve the currently-queried object.  Wrapper for $wp_query->get_queried_object() 
     33 * 
     34 * @uses WP_Query::get_queried_object 
     35 * 
     36 * @since 3.1.0 
     37 * @access public 
     38 * 
     39 * @return object 
     40 */ 
     41function get_queried_object() { 
     42        global $wp_query; 
     43        return $wp_query->get_queried_object(); 
     44} 
     45 
     46/** 
     47 * Retrieve ID of the current queried object. Wrapper for $wp_query->get_queried_object_id() 
     48 *  
     49 * @uses WP_Query::get_queried_object_id() 
     50 * 
     51 * @since 3.1.0 
     52 * @access public 
     53 * 
     54 * @return int 
     55 */ 
     56function get_queried_object_id() { 
     57        global $wp_query; 
     58        return $wp_query->get_queried_object_id(); 
     59} 
     60 
     61/** 
    3162 * Set query variable. 
    3263 * 
    3364 * @see WP_Query::set() 
     
    98129 */ 
    99130 
    100131/** 
    101  * Is query requesting an archive page. 
     132 * Is the query for an archive page? 
    102133 * 
     134 * Month, Year, Category, Author, Post Type archive... 
     135 * 
     136 * @see WP_Query::is_archive() 
    103137 * @since 1.5.0 
    104138 * @uses $wp_query 
    105139 * 
    106  * @return bool True if page is archive. 
     140 * @return bool 
    107141 */ 
    108142function is_archive() { 
    109143        global $wp_query; 
    110144 
    111         return $wp_query->is_archive; 
     145        return $wp_query->is_archive(); 
    112146} 
    113147 
    114148/** 
    115  * Is query requesting an attachment page. 
     149 * Is the query for a post type archive page? 
    116150 * 
     151 * @see WP_Query::is_post_type_archive() 
     152 * @since 3.1.0 
     153 * @uses $wp_query 
     154 * 
     155 * @param mixed $post_types Optional. Post type or array of posts types to check against. 
     156 * @return bool 
     157 */ 
     158function is_post_type_archive( $post_types = '' ) { 
     159        global $wp_query; 
     160 
     161        return $wp_query->is_post_type_archive( $post_types ); 
     162} 
     163 
     164/** 
     165 * Is the query for an attachment page? 
     166 * 
     167 * @see WP_Query::is_attachment() 
    117168 * @since 2.0.0 
    118169 * @uses $wp_query 
    119170 * 
    120  * @return bool True if page is attachment. 
     171 * @return bool 
    121172 */ 
    122173function is_attachment() { 
    123174        global $wp_query; 
    124175 
    125         return $wp_query->is_attachment; 
     176        return $wp_query->is_attachment(); 
    126177} 
    127178 
    128179/** 
    129  * Is query requesting an author page. 
     180 * Is the query for an author archive page? 
    130181 * 
    131  * If the $author parameter is specified then the check will be expanded to 
    132  * include whether the queried author matches the one given in the parameter. 
    133  * You can match against integers and against strings. 
     182 * If the $author parameter is specified, this function will additionally 
     183 * check if the query is for one of the authors specified. 
    134184 * 
    135  * If matching against an integer, the ID should be used of the author for the 
    136  * test. If the $author is an ID and matches the author page user ID, then 
    137  * 'true' will be returned. 
    138  * 
    139  * If matching against strings, then the test will be matched against both the 
    140  * nickname and user nicename and will return true on success. 
    141  * 
     185 * @see WP_Query::is_author() 
    142186 * @since 1.5.0 
    143187 * @uses $wp_query 
    144188 * 
    145  * @param string|int $author Optional. Is current page this author. 
    146  * @return bool True if page is author or $author (if set). 
     189 * @param mixed $author Optional. User ID, nickname, nicename, or array of User IDs, nicknames, and nicenames 
     190 * @return bool 
    147191 */ 
    148 function is_author($author = '') { 
     192function is_author( $author = '' ) { 
    149193        global $wp_query; 
    150194 
    151         if ( !$wp_query->is_author ) 
    152                 return false; 
    153  
    154         if ( empty($author) ) 
    155                 return true; 
    156  
    157         $author_obj = $wp_query->get_queried_object(); 
    158  
    159         $author = (array) $author; 
    160  
    161         if ( in_array( $author_obj->ID, $author ) ) 
    162                 return true; 
    163         elseif ( in_array( $author_obj->nickname, $author ) ) 
    164                 return true; 
    165         elseif ( in_array( $author_obj->user_nicename, $author ) ) 
    166                 return true; 
    167  
    168         return false; 
     195        return $wp_query->is_author( $author ); 
    169196} 
    170197 
    171198/** 
    172  * Whether current page query contains a category name or given category name. 
     199 * Is the query for a category archive page? 
    173200 * 
    174  * The category list can contain category IDs, names, or category slugs. If any 
    175  * of them are part of the query, then it will return true. 
     201 * If the $category parameter is specified, this function will additionally 
     202 * check if the query is for one of the categories specified. 
    176203 * 
     204 * @see WP_Query::is_category() 
    177205 * @since 1.5.0 
    178206 * @uses $wp_query 
    179207 * 
    180  * @param string|array $category Optional. 
     208 * @param mixed $category Optional. Category ID, name, slug, or array of Category IDs, names, and slugs. 
    181209 * @return bool 
    182210 */ 
    183 function is_category($category = '') { 
     211function is_category( $category = '' ) { 
    184212        global $wp_query; 
    185213 
    186         if ( !$wp_query->is_category ) 
    187                 return false; 
    188  
    189         if ( empty($category) ) 
    190                 return true; 
    191  
    192         $cat_obj = $wp_query->get_queried_object(); 
    193  
    194         $category = (array) $category; 
    195  
    196         if ( in_array( $cat_obj->term_id, $category ) ) 
    197                 return true; 
    198         elseif ( in_array( $cat_obj->name, $category ) ) 
    199                 return true; 
    200         elseif ( in_array( $cat_obj->slug, $category ) ) 
    201                 return true; 
    202  
    203         return false; 
     214        return $wp_query->is_category( $category ); 
    204215} 
    205216 
    206217/** 
    207  * Whether the current page query has the given tag slug or contains tag. 
     218 * Is the query for a tag archive page? 
    208219 * 
     220 * If the $tag parameter is specified, this function will additionally 
     221 * check if the query is for one of the tags specified. 
     222 * 
     223 * @see WP_Query::is_tag() 
    209224 * @since 2.3.0 
    210225 * @uses $wp_query 
    211226 * 
    212  * @param string|array $slug Optional. Single tag or list of tags to check for. 
     227 * @param mixed $slug Optional. Tag slug or array of slugs. 
    213228 * @return bool 
    214229 */ 
    215230function is_tag( $slug = '' ) { 
    216231        global $wp_query; 
    217232 
    218         if ( !$wp_query->is_tag ) 
    219                 return false; 
    220  
    221         if ( empty( $slug ) ) 
    222                 return true; 
    223  
    224         $tag_obj = $wp_query->get_queried_object(); 
    225  
    226         $slug = (array) $slug; 
    227  
    228         if ( in_array( $tag_obj->slug, $slug ) ) 
    229                 return true; 
    230  
    231         return false; 
     233        return $wp_query->is_tag( $slug ); 
    232234} 
    233235 
    234236/** 
    235  * Whether the current query is for the given taxonomy and/or term. 
     237 * Is the query for a taxonomy archive page? 
    236238 * 
    237  * If no taxonomy argument is set, returns true if any taxonomy is queried. 
    238  * If the taxonomy argument is passed but no term argument, returns true 
    239  *    if the taxonomy or taxonomies in the argument are being queried. 
    240  * If both taxonomy and term arguments are passed, returns true 
    241  *    if the current query is for a term contained in the terms argument 
    242  *    which has a taxonomy contained in the taxonomy argument. 
     239 * If the $taxonomy parameter is specified, this function will additionally 
     240 * check if the query is for that specific $taxonomy. 
    243241 * 
     242 * If the $term parameter is specified in addition to the $taxonomy parameter, 
     243 * this function will additionally check if the query is for one of the terms 
     244 * specified. 
     245 * 
     246 * @see WP_Query::is_tax() 
    244247 * @since 2.5.0 
    245248 * @uses $wp_query 
    246249 * 
    247  * @param string|array $taxonomy Optional. Taxonomy slug or slugs to check in current query. 
    248  * @param int|array|string $term. Optional. A single or array of, The term's ID, Name or Slug 
     250 * @param mixed $taxonomy Optional. Taxonomy slug or slugs. 
     251 * @param mixed $term Optional. Term ID, name, slug or array of Term IDs, names, and slugs. 
    249252 * @return bool 
    250253 */ 
    251254function is_tax( $taxonomy = '', $term = '' ) { 
    252255        global $wp_query, $wp_taxonomies; 
    253256 
    254         $queried_object = $wp_query->get_queried_object(); 
    255         $tax_array = array_intersect(array_keys($wp_taxonomies), (array) $taxonomy); 
    256         $term_array = (array) $term; 
    257  
    258         if ( !$wp_query->is_tax ) 
    259                 return false; 
    260  
    261         if ( empty( $taxonomy ) ) 
    262                 return true; 
    263  
    264         if ( empty( $term ) ) // Only a Taxonomy provided 
    265                 return isset($queried_object->taxonomy) && count( $tax_array ) && in_array($queried_object->taxonomy, $tax_array); 
    266  
    267         return isset($queried_object->term_id) && 
    268                         count(array_intersect( 
    269                                 array($queried_object->term_id, $queried_object->name, $queried_object->slug), 
    270                                 $term_array 
    271                         )); 
     257        return $wp_query->is_tax( $taxonomy, $term ); 
    272258} 
    273259 
    274260/** 
    275261 * Whether the current URL is within the comments popup window. 
    276262 * 
     263 * @see WP_Query::is_comments_popup() 
    277264 * @since 1.5.0 
    278265 * @uses $wp_query 
    279266 * 
     
    282269function is_comments_popup() { 
    283270        global $wp_query; 
    284271 
    285         return $wp_query->is_comments_popup; 
     272        return $wp_query->is_comments_popup(); 
    286273} 
    287274 
    288275/** 
    289  * Whether current URL is based on a date. 
     276 * Is the query for a date archive? 
    290277 * 
     278 * @see WP_Query::is_date() 
    291279 * @since 1.5.0 
    292280 * @uses $wp_query 
    293281 * 
     
    296284function is_date() { 
    297285        global $wp_query; 
    298286 
    299         return $wp_query->is_date; 
     287        return $wp_query->is_date(); 
    300288} 
    301289 
    302290/** 
    303  * Whether current blog URL contains a day. 
     291 * Is the query for a day archive? 
    304292 * 
     293 * @see WP_Query::is_day() 
    305294 * @since 1.5.0 
    306295 * @uses $wp_query 
    307296 * 
     
    310299function is_day() { 
    311300        global $wp_query; 
    312301 
    313         return $wp_query->is_day; 
     302        return $wp_query->is_day(); 
    314303} 
    315304 
    316305/** 
    317  * Whether current page query is feed URL. 
     306 * Is the query for a feed? 
    318307 * 
     308 * @see WP_Query::is_feed() 
    319309 * @since 1.5.0 
    320310 * @uses $wp_query 
    321311 * 
     
    324314function is_feed() { 
    325315        global $wp_query; 
    326316 
    327         return $wp_query->is_feed; 
     317        return $wp_query->is_feed(); 
    328318} 
    329319 
    330320/** 
    331  * Whether current page query is comment feed URL. 
     321 * Is the query for a comments feed? 
    332322 * 
     323 * @see WP_Query::is_comments_feed() 
    333324 * @since 3.0.0 
    334325 * @uses $wp_query 
    335326 * 
     
    338329function is_comment_feed() { 
    339330        global $wp_query; 
    340331 
    341         return $wp_query->is_comment_feed; 
     332        return $wp_query->is_comment_feed(); 
    342333} 
    343334 
    344335/** 
    345  * Whether current page query is the front of the site. 
     336 * Is the query for the front page of the site? 
    346337 * 
     338 * This is for what is displayed at your site's main URL. 
     339 * 
     340 * Depends on the site's "Front page displays" Reading Settings 'show_on_front' and 'page_on_front'. 
     341 * 
     342 * If you set a static page for the front page of your site, this function will return 
     343 * true when viewing that page. 
     344 * 
     345 * Otherwise the same as @see is_home() 
     346 * 
     347 * @see WP_Query::is_front_page() 
    347348 * @since 2.5.0 
    348349 * @uses is_home() 
    349350 * @uses get_option() 
     
    351352 * @return bool True, if front of site. 
    352353 */ 
    353354function is_front_page() { 
    354         // most likely case 
    355         if ( 'posts' == get_option('show_on_front') && is_home() ) 
    356                 return true; 
    357         elseif ( 'page' == get_option('show_on_front') && get_option('page_on_front') && is_page(get_option('page_on_front')) ) 
    358                 return true; 
    359         else 
    360                 return false; 
     355        global $wp_query; 
     356 
     357        return $wp_query->is_front_page(); 
    361358} 
    362359 
    363360/** 
    364  * Whether current page view is the blog homepage. 
     361 * Is the query for the blog homepage? 
    365362 * 
    366  * This is the page which is showing the time based blog content of your site 
    367  * so if you set a static page for the front page of your site then this will 
    368  * only be true on the page which you set as the "Posts page" in Reading Settings. 
     363 * This is the page which shows the time based blog content of your site. 
    369364 * 
     365 * Depends on the site's "Front page displays" Reading Settings 'show_on_front' and 'page_for_posts'. 
     366 * 
     367 * If you set a static page for the front page of your site, this function will return 
     368 * true only on the page you set as the "Posts page". 
     369 * 
     370 * @see is_front_page() 
     371 * 
     372 * @see WP_Query::is_home() 
    370373 * @since 1.5.0 
    371374 * @uses $wp_query 
    372375 * 
     
    375378function is_home() { 
    376379        global $wp_query; 
    377380 
    378         return $wp_query->is_home; 
     381        return $wp_query->is_home(); 
    379382} 
    380383 
    381384/** 
    382  * Whether current page query contains a month. 
     385 * Is the query for a month archive? 
    383386 * 
     387 * @see WP_Query::is_month() 
    384388 * @since 1.5.0 
    385389 * @uses $wp_query 
    386390 * 
     
    389393function is_month() { 
    390394        global $wp_query; 
    391395 
    392         return $wp_query->is_month; 
     396        return $wp_query->is_month(); 
    393397} 
    394398 
    395399/** 
    396  * Whether query is page or contains given page(s). 
     400 * Is the query for a single Page? 
    397401 * 
    398  * Calls the function without any parameters will only test whether the current 
    399  * query is of the page type. Either a list or a single item can be tested 
    400  * against for whether the query is a page and also is the value or one of the 
    401  * values in the page parameter. 
     402 * If the $page parameter is specified, this function will additionally 
     403 * check if the query is for one of the Pages specified. 
    402404 * 
    403  * The parameter can contain the page ID, page title, or page name. The 
    404  * parameter can also be an array of those three values. 
     405 * @see is_single() 
     406 * @see is_singular() 
    405407 * 
     408 * @see WP_Query::is_single() 
    406409 * @since 1.5.0 
    407410 * @uses $wp_query 
    408411 * 
    409  * @param mixed $page Either page or list of pages to test against. 
     412 * @param mixed $page Page ID, title, slug, or array of Page IDs, titles, and slugs. 
    410413 * @return bool 
    411414 */ 
    412 function is_page($page = '') { 
     415function is_page( $page = '' ) { 
    413416        global $wp_query; 
    414417 
    415         if ( !$wp_query->is_page ) 
    416                 return false; 
    417  
    418         if ( empty($page) ) 
    419                 return true; 
    420  
    421         $page_obj = $wp_query->get_queried_object(); 
    422  
    423         $page = (array) $page; 
    424  
    425         if ( in_array( $page_obj->ID, $page ) ) 
    426                 return true; 
    427         elseif ( in_array( $page_obj->post_title, $page ) ) 
    428                 return true; 
    429         else if ( in_array( $page_obj->post_name, $page ) ) 
    430                 return true; 
    431  
    432         return false; 
     418        return $wp_query->is_page( $page ); 
    433419} 
    434420 
    435421/** 
    436  * Whether query contains multiple pages for the results. 
     422 * Is the query for paged result and not for the first page? 
    437423 * 
     424 * @see WP_Query::is_paged() 
    438425 * @since 1.5.0 
    439426 * @uses $wp_query 
    440427 * 
     
    443430function is_paged() { 
    444431        global $wp_query; 
    445432 
    446         return $wp_query->is_paged; 
     433        return $wp_query->is_paged(); 
    447434} 
    448435 
    449436/** 
    450  * Whether the current page was created by a plugin. 
     437 * Is the query for a post or page preview? 
    451438 * 
    452  * The plugin can set this by using the global $plugin_page and setting it to 
    453  * true. 
    454  * 
    455  * @since 1.5.0 
    456  * @global bool $plugin_page Used by plugins to tell the query that current is a plugin page. 
    457  * 
    458  * @return bool 
    459  */ 
    460 function is_plugin_page() { 
    461         global $plugin_page; 
    462  
    463         if ( isset($plugin_page) ) 
    464                 return true; 
    465  
    466         return false; 
    467 } 
    468  
    469 /** 
    470  * Whether the current query is preview of post or page. 
    471  * 
     439 * @see WP_Query::is_preview() 
    472440 * @since 2.0.0 
    473441 * @uses $wp_query 
    474442 * 
     
    477445function is_preview() { 
    478446        global $wp_query; 
    479447 
    480         return $wp_query->is_preview; 
     448        return $wp_query->is_preview(); 
    481449} 
    482450 
    483451/** 
    484  * Whether the current query post is robots. 
     452 * Is the query for the robots file? 
    485453 * 
     454 * @see WP_Query::is_robots() 
    486455 * @since 2.1.0 
    487456 * @uses $wp_query 
    488457 * 
     
    491460function is_robots() { 
    492461        global $wp_query; 
    493462 
    494         return $wp_query->is_robots; 
     463        return $wp_query->is_robots(); 
    495464} 
    496465 
    497466/** 
    498  * Whether current query is the result of a user search. 
     467 * Is the query for a search? 
    499468 * 
     469 * @see WP_Query::is_search() 
    500470 * @since 1.5.0 
    501471 * @uses $wp_query 
    502472 * 
     
    505475function is_search() { 
    506476        global $wp_query; 
    507477 
    508         return $wp_query->is_search; 
     478        return $wp_query->is_search(); 
    509479} 
    510480 
    511481/** 
    512  * Whether the current page query is single page. 
     482 * Is the query for a single post? 
    513483 * 
    514  * The parameter can contain the post ID, post title, or post name. The 
    515  * parameter can also be an array of those three values. 
     484 * If the $post parameter is specified, this function will additionally 
     485 * check if the query is for one of the Posts specified. 
    516486 * 
    517  * This applies to other post types, attachments, pages, posts. Just means that 
    518  * the current query has only a single object. 
     487 * Can also be used for attachments or any other post type except pages. 
    519488 * 
     489 * @see is_page() 
     490 * @see is_singular() 
     491 * 
     492 * @see WP_Query::is_single() 
    520493 * @since 1.5.0 
    521494 * @uses $wp_query 
    522495 * 
    523  * @param mixed $post Either post or list of posts to test against. 
     496 * @param mixed $post Post ID, title, slug, or array of Post IDs, titles, and slugs. 
    524497 * @return bool 
    525498 */ 
    526 function is_single($post = '') { 
     499function is_single( $post = '' ) { 
    527500        global $wp_query; 
    528501 
    529         if ( !$wp_query->is_single ) 
    530                 return false; 
    531  
    532         if ( empty($post) ) 
    533                 return true; 
    534  
    535         $post_obj = $wp_query->get_queried_object(); 
    536  
    537         $post = (array) $post; 
    538  
    539         if ( in_array( $post_obj->ID, $post ) ) 
    540                 return true; 
    541         elseif ( in_array( $post_obj->post_title, $post ) ) 
    542                 return true; 
    543         elseif ( in_array( $post_obj->post_name, $post ) ) 
    544                 return true; 
    545  
    546         return false; 
     502        return $wp_query->is_single( $post ); 
    547503} 
    548504 
    549505/** 
    550  * Whether is single post, is a page, or is an attachment. 
     506 * Is the query for a single post of any post type (post, attachment, page, ... )? 
    551507 * 
     508 * If the $post_types parameter is specified, this function will additionally 
     509 * check if the query is for one of the Posts Types specified. 
     510 * 
     511 * @see is_page() 
     512 * @see is_single() 
     513 * 
     514 * @see WP_Query::is_singular() 
    552515 * @since 1.5.0 
    553516 * @uses $wp_query 
    554517 * 
    555  * @param string|array $post_types Optional. Post type or types to check in current query. 
     518 * @param mixed $post_types Optional. Post Type or array of Post Types 
    556519 * @return bool 
    557520 */ 
    558 function is_singular($post_types = '') { 
     521function is_singular( $post_types = '' ) { 
    559522        global $wp_query; 
    560523 
    561         if ( empty($post_types) || !$wp_query->is_singular ) 
    562                 return $wp_query->is_singular; 
    563  
    564         $post_obj = $wp_query->get_queried_object(); 
    565  
    566         return in_array($post_obj->post_type, (array) $post_types); 
     524        return $wp_query->is_singular( $post_types ); 
    567525} 
    568526 
    569527/** 
    570  * Whether the query contains a time. 
     528 * Is the query for a specific time? 
    571529 * 
     530 * @see WP_Query::is_time() 
    572531 * @since 1.5.0 
    573532 * @uses $wp_query 
    574533 * 
     
    577536function is_time() { 
    578537        global $wp_query; 
    579538 
    580         return $wp_query->is_time; 
     539        return $wp_query->is_time(); 
    581540} 
    582541 
    583542/** 
    584  * Whether the query is a trackback. 
     543 * Is the query for a trackback endpoint call? 
    585544 * 
     545 * @see WP_Query::is_trackback() 
    586546 * @since 1.5.0 
    587547 * @uses $wp_query 
    588548 * 
     
    591551function is_trackback() { 
    592552        global $wp_query; 
    593553 
    594         return $wp_query->is_trackback; 
     554        return $wp_query->is_trackback(); 
    595555} 
    596556 
    597557/** 
    598  * Whether the query contains a year. 
     558 * Is the query for a specific year? 
    599559 * 
     560 * @see WP_Query::is_year() 
    600561 * @since 1.5.0 
    601562 * @uses $wp_query 
    602563 * 
     
    605566function is_year() { 
    606567        global $wp_query; 
    607568 
    608         return $wp_query->is_year; 
     569        return $wp_query->is_year(); 
    609570} 
    610571 
    611572/** 
    612  * Whether current page query is a 404 and no results for WordPress query. 
     573 * Is the query a 404 (returns no results)? 
    613574 * 
     575 * @see WP_Query::is_404() 
    614576 * @since 1.5.0 
    615577 * @uses $wp_query 
    616578 * 
    617  * @return bool True, if nothing is found matching WordPress Query. 
     579 * @return bool 
    618580 */ 
    619581function is_404() { 
    620582        global $wp_query; 
    621583 
    622         return $wp_query->is_404; 
     584        return $wp_query->is_404(); 
    623585} 
    624586 
    625587/* 
     
    729691class WP_Query { 
    730692 
    731693        /** 
    732          * Query string 
     694         * Query vars set by the user 
    733695         * 
    734696         * @since 1.5.0 
    735697         * @access public 
    736          * @var string 
     698         * @var array 
    737699         */ 
    738700        var $query; 
    739701 
    740702        /** 
    741          * Query search variables set by the user. 
     703         * Query vars, after parsing 
    742704         * 
    743705         * @since 1.5.0 
    744706         * @access public 
     
    816778         * 
    817779         * @since 1.5.0 
    818780         * @access public 
    819          * @var int 
     781         * @var object 
    820782         */ 
    821783        var $post; 
    822784 
     
    10641026        var $is_comments_popup = false; 
    10651027 
    10661028        /** 
     1029         * Set if query is paged 
     1030         * 
     1031         * @since 1.5.0 
     1032         * @access public 
     1033         * @var bool 
     1034         */ 
     1035        var $is_paged = false; 
     1036 
     1037        /** 
    10671038         * Set if query is part of administration page. 
    10681039         * 
    10691040         * @since 1.5.0 
     
    11111082        var $is_posts_page = false; 
    11121083 
    11131084        /** 
     1085         * Set if query is for a post type archive. 
     1086         * 
     1087         * @since 3.1.0 
     1088         * @access public 
     1089         * @var bool 
     1090         */ 
     1091        var $is_post_type_archive = false; 
     1092 
     1093        /** 
    11141094         * Resets query flags to false. 
    11151095         * 
    11161096         * The query flags are what page info WordPress was able to figure out. 
     
    11201100         */ 
    11211101        function init_query_flags() { 
    11221102                $this->is_single = false; 
     1103                $this->is_preview = false; 
    11231104                $this->is_page = false; 
    11241105                $this->is_archive = false; 
    11251106                $this->is_date = false; 
     
    11371118                $this->is_trackback = false; 
    11381119                $this->is_home = false; 
    11391120                $this->is_404 = false; 
     1121                $this->is_comments_popup = false; 
    11401122                $this->is_paged = false; 
    11411123                $this->is_admin = false; 
    11421124                $this->is_attachment = false; 
    11431125                $this->is_singular = false; 
    11441126                $this->is_robots = false; 
    11451127                $this->is_posts_page = false; 
     1128                $this->is_post_type_archive = false; 
    11461129        } 
    11471130 
    11481131        /** 
     
    11551138                unset($this->posts); 
    11561139                unset($this->query); 
    11571140                $this->query_vars = array(); 
     1141                $this->tax_query = array(); 
     1142                $this->meta_query = array(); 
    11581143                unset($this->queried_object); 
    11591144                unset($this->queried_object_id); 
    11601145                $this->post_count = 0; 
    11611146                $this->current_post = -1; 
    11621147                $this->in_the_loop = false; 
     1148                unset( $this->request ); 
     1149                unset( $this->post ); 
     1150                unset( $this->comments ); 
     1151                unset( $this->comment ); 
     1152                $this->comment_count = 0; 
     1153                $this->current_comment = -1; 
     1154                $this->found_posts = 0; 
     1155                $this->max_num_pages = 0; 
     1156                $this->max_num_comment_pages = 0; 
    11631157 
    11641158                $this->init_query_flags(); 
    11651159        } 
     
    12181212                        , 'preview' 
    12191213                        , 's' 
    12201214                        , 'sentence' 
     1215                        , 'fields' 
    12211216                ); 
    12221217 
    12231218                foreach ( $keys as $key ) { 
    1224                         if ( !isset($array[$key])) 
     1219                        if ( !isset($array[$key]) ) 
    12251220                                $array[$key] = ''; 
    12261221                } 
    12271222 
     
    12291224                        'tag__in', 'tag__not_in', 'tag__and', 'tag_slug__in', 'tag_slug__and'); 
    12301225 
    12311226                foreach ( $array_keys as $key ) { 
    1232                         if ( !isset($array[$key])) 
     1227                        if ( !isset($array[$key]) ) 
    12331228                                $array[$key] = array(); 
    12341229                } 
    12351230                return $array; 
     
    12461241        function parse_query($query) { 
    12471242                if ( !empty($query) || !isset($this->query) ) { 
    12481243                        $this->init(); 
    1249                         if ( is_array($query) ) 
    1250                                 $this->query_vars = $query; 
    1251                         else 
    1252                                 parse_str($query, $this->query_vars); 
    1253                         $this->query = $query; 
     1244                        $this->query = $this->query_vars = wp_parse_args($query); 
    12541245                } 
    12551246 
    12561247                $this->query_vars = $this->fill_query_vars($this->query_vars); 
     
    12961287                } elseif ( '' != $qv['static'] || '' != $qv['pagename'] || !empty($qv['page_id']) ) { 
    12971288                        $this->is_page = true; 
    12981289                        $this->is_single = false; 
    1299                 } elseif ( !empty($qv['s']) ) { 
    1300                         $this->is_search = true; 
    13011290                } else { 
    1302                 // Look for archive queries.  Dates, categories, authors. 
     1291                // Look for archive queries.  Dates, categories, authors, search, post type archives. 
    13031292 
     1293                        if ( !empty($qv['s']) ) { 
     1294                                $this->is_search = true; 
     1295                        } 
     1296 
    13041297                        if ( '' !== $qv['second'] ) { 
    13051298                                $this->is_time = true; 
    13061299                                $this->is_date = true; 
     
    13541347                                $this->is_date = true; 
    13551348                        } 
    13561349 
    1357                         if ( empty($qv['cat']) || ($qv['cat'] == '0') ) { 
     1350                        if ( empty($qv['cat']) || ($qv['cat'] == '0') ) 
    13581351                                $this->is_category = false; 
    1359                         } else { 
    1360                                 if ( strpos($qv['cat'], '-') !== false ) { 
    1361                                         $this->is_category = false; 
    1362                                 } else { 
    1363                                         $this->is_category = true; 
    1364                                 } 
    1365                         } 
     1352                        else 
     1353                                $this->is_category = strpos($qv['cat'], '-') === false; 
    13661354 
    1367                         if ( '' != $qv['category_name'] ) { 
     1355                        if ( !empty($qv['category_name']) ) { 
    13681356                                $this->is_category = true; 
    13691357                        } 
    13701358 
    1371                         if ( !is_array($qv['category__in']) || empty($qv['category__in']) ) { 
     1359                        if ( empty($qv['category__in']) ) { 
    13721360                                $qv['category__in'] = array(); 
    13731361                        } else { 
    1374                                 $qv['category__in'] = array_map('absint', $qv['category__in']); 
     1362                                $qv['category__in'] = array_map('absint', (array) $qv['category__in']); 
    13751363                                $this->is_category = true; 
    13761364                        } 
    13771365 
    1378                         if ( !is_array($qv['category__not_in']) || empty($qv['category__not_in']) ) { 
     1366                        if ( empty($qv['category__not_in']) ) { 
    13791367                                $qv['category__not_in'] = array(); 
    13801368                        } else { 
    1381                                 $qv['category__not_in'] = array_map('absint', $qv['category__not_in']); 
     1369                                $qv['category__not_in'] = array_map('absint', (array) $qv['category__not_in']); 
    13821370                        } 
    13831371 
    1384                         if ( !is_array($qv['category__and']) || empty($qv['category__and']) ) { 
     1372                        if ( empty($qv['category__and']) ) { 
    13851373                                $qv['category__and'] = array(); 
    13861374                        } else { 
    1387                                 $qv['category__and'] = array_map('absint', $qv['category__and']); 
     1375                                $qv['category__and'] = array_map('absint', (array) $qv['category__and']); 
    13881376                                $this->is_category = true; 
    13891377                        } 
    13901378 
     
    13921380                                $this->is_tag = true; 
    13931381 
    13941382                        $qv['tag_id'] = absint($qv['tag_id']); 
    1395                         if (  !empty($qv['tag_id']) ) 
     1383                        if ( !empty($qv['tag_id']) ) 
    13961384                                $this->is_tag = true; 
    13971385 
    1398                         if ( !is_array($qv['tag__in']) || empty($qv['tag__in']) ) { 
     1386                        if ( empty($qv['tag__in']) ) { 
    13991387                                $qv['tag__in'] = array(); 
    14001388                        } else { 
    1401                                 $qv['tag__in'] = array_map('absint', $qv['tag__in']); 
     1389                                $qv['tag__in'] = array_map('absint', (array) $qv['tag__in']); 
    14021390                                $this->is_tag = true; 
    14031391                        } 
    14041392 
    1405                         if ( !is_array($qv['tag__not_in']) || empty($qv['tag__not_in']) ) { 
     1393                        if ( empty($qv['tag__not_in']) ) { 
    14061394                                $qv['tag__not_in'] = array(); 
    14071395                        } else { 
    1408                                 $qv['tag__not_in'] = array_map('absint', $qv['tag__not_in']); 
     1396                                $qv['tag__not_in'] = array_map('absint', (array) $qv['tag__not_in']); 
    14091397                        } 
    14101398 
    14111399                        if ( !is_array($qv['tag__and']) || empty($qv['tag__and']) ) { 
    14121400                                $qv['tag__and'] = array(); 
    14131401                        } else { 
    1414                                 $qv['tag__and'] = array_map('absint', $qv['tag__and']); 
    1415                                 $this->is_category = true; 
     1402                                $qv['tag__and'] = array_map('absint', (array) $qv['tag__and']); 
     1403                                $this->is_tag = true; 
    14161404                        } 
    14171405 
    1418                         if ( !is_array($qv['tag_slug__in']) || empty($qv['tag_slug__in']) ) { 
     1406                        if ( empty($qv['tag_slug__in']) ) { 
    14191407                                $qv['tag_slug__in'] = array(); 
    14201408                        } else { 
    1421                                 $qv['tag_slug__in'] = array_map('sanitize_title', $qv['tag_slug__in']); 
     1409                                $qv['tag_slug__in'] = array_map('sanitize_title', (array) $qv['tag_slug__in']); 
    14221410                                $this->is_tag = true; 
    14231411                        } 
    14241412 
    1425                         if ( !is_array($qv['tag_slug__and']) || empty($qv['tag_slug__and']) ) { 
     1413                        if ( empty($qv['tag_slug__and']) ) { 
    14261414                                $qv['tag_slug__and'] = array(); 
    14271415                        } else { 
    1428                                 $qv['tag_slug__and'] = array_map('sanitize_title', $qv['tag_slug__and']); 
     1416                                $qv['tag_slug__and'] = array_map('sanitize_title', (array) $qv['tag_slug__and']); 
    14291417                                $this->is_tag = true; 
    14301418                        } 
    14311419 
     
    14491437                                $this->is_author = true; 
    14501438                        } 
    14511439 
    1452                         if ( '' != $qv['author_name'] ) { 
     1440                        if ( '' != $qv['author_name'] ) 
    14531441                                $this->is_author = true; 
     1442 
     1443                        if ( !empty( $qv['post_type'] ) && ! is_array( $qv['post_type'] ) ) { 
     1444                                $post_type_obj = get_post_type_object( $qv['post_type'] ); 
     1445                                if ( ! empty( $post_type_obj->has_archive ) ) 
     1446                                        $this->is_post_type_archive = true; 
    14541447                        } 
    14551448 
    1456                         if ( ($this->is_date || $this->is_author || $this->is_category || $this->is_tag || $this->is_tax) ) 
     1449                        if ( $this->is_post_type_archive || $this->is_date || $this->is_author || $this->is_category || $this->is_tag || $this->is_tax ) 
    14571450                                $this->is_archive = true; 
    14581451                } 
    14591452 
     
    15281521 
    15291522                if ( !empty($qv['post_type']) ) { 
    15301523                        if ( is_array($qv['post_type']) ) 
    1531                                 $qv['post_type'] = array_map('sanitize_user', $qv['post_type'], array(true)); 
     1524                                $qv['post_type'] = array_map('sanitize_key', $qv['post_type']); 
    15321525                        else 
    1533                                 $qv['post_type'] = sanitize_user($qv['post_type'], true); 
     1526                                $qv['post_type'] = sanitize_key($qv['post_type']); 
    15341527                } 
    15351528 
    15361529                if ( !empty($qv['post_status']) ) 
     
    16251618                $join = ''; 
    16261619                $search = ''; 
    16271620                $groupby = ''; 
    1628                 $fields = "$wpdb->posts.*"; 
     1621                $fields = ''; 
    16291622                $post_status_join = false; 
    16301623                $page = 1; 
    16311624 
    1632                 if ( !isset($q['caller_get_posts']) ) 
    1633                         $q['caller_get_posts'] = false; 
     1625                if ( isset( $q['caller_get_posts'] ) ) { 
     1626                        _deprecated_argument( 'WP_Query', '3.1', __( '"caller_get_posts" is deprecated. Use "ignore_sticky_posts" instead.' ) ); 
     1627                        if ( !isset( $q['ignore_sticky_posts'] ) ) 
     1628                                $q['ignore_sticky_posts'] = $q['caller_get_posts']; 
     1629                } 
    16341630 
     1631                if ( !isset( $q['ignore_sticky_posts'] ) ) 
     1632                        $q['ignore_sticky_posts'] = false; 
     1633 
    16351634                if ( !isset($q['suppress_filters']) ) 
    16361635                        $q['suppress_filters'] = false; 
    16371636 
     
    17001699                else 
    17011700                        $q['no_found_rows'] = false; 
    17021701 
     1702                switch ( $q['fields'] ) { 
     1703                        case 'ids': 
     1704                                $fields = "$wpdb->posts.ID"; 
     1705                                break; 
     1706                        case 'id=>parent': 
     1707                                $fields = "$wpdb->posts.ID, $wpdb->posts.post_parent"; 
     1708                                break; 
     1709                        default: 
     1710                                $fields = "$wpdb->posts.*"; 
     1711                } 
     1712 
    17031713                // If a month is specified in the querystring, load that month 
    17041714                if ( $q['m'] ) { 
    17051715                        $q['m'] = '' . preg_replace('|[^0-9]|', '', $q['m']); 
     
    17571767                } 
    17581768 
    17591769                if ( '' != $q['name'] ) { 
    1760                         $q['name'] = sanitize_title($q['name']); 
     1770                        $q['name'] = sanitize_title_for_query( $q['name'] ); 
    17611771                        $where .= " AND $wpdb->posts.post_name = '" . $q['name'] . "'"; 
    17621772                } elseif ( '' != $q['pagename'] ) { 
    17631773                        if ( isset($this->queried_object_id) ) { 
     
    17851795 
    17861796                        $page_for_posts = get_option('page_for_posts'); 
    17871797                        if  ( ('page' != get_option('show_on_front') ) || empty($page_for_posts) || ( $reqpage != $page_for_posts ) ) { 
    1788                                 $q['pagename'] = str_replace('%2F', '/', urlencode(urldecode($q['pagename']))); 
    1789                                 $page_paths = '/' . trim($q['pagename'], '/'); 
    1790                                 $q['pagename'] = sanitize_title(basename($page_paths)); 
     1798                                $q['pagename'] = sanitize_title_for_query( wp_basename( $q['pagename'] ) ); 
    17911799                                $q['name'] = $q['pagename']; 
    17921800                                $where .= " AND ($wpdb->posts.ID = '$reqpage')"; 
    17931801                                $reqpage_obj = get_page($reqpage); 
     
    17991807                                } 
    18001808                        } 
    18011809                } elseif ( '' != $q['attachment'] ) { 
    1802                         $q['attachment'] = str_replace('%2F', '/', urlencode(urldecode($q['attachment']))); 
    1803                         $attach_paths = '/' . trim($q['attachment'], '/'); 
    1804                         $q['attachment'] = sanitize_title(basename($attach_paths)); 
     1810                        $q['attachment'] = sanitize_title_for_query( wp_basename( $q['attachment'] ) ); 
    18051811                        $q['name'] = $q['attachment']; 
    18061812                        $where .= " AND $wpdb->posts.post_name = '" . $q['attachment'] . "'"; 
    18071813                } 
     
    21022108                                        $q['author_name'] = $q['author_name'][count($q['author_name'])-2]; // there was a trailling slash 
    21032109                                } 
    21042110                        } 
    2105                         $q['author_name'] = sanitize_title($q['author_name']); 
     2111                        $q['author_name'] = sanitize_title_for_query( $q['author_name'] ); 
    21062112                        $q['author'] = get_user_by('slug', $q['author_name']); 
    21072113                        if ( $q['author'] ) 
    21082114                                $q['author'] = $q['author']->ID; 
     
    21782184                                $q['orderby'] = "$wpdb->posts.post_date ".$q['order']; 
    21792185                } 
    21802186 
    2181                 if ( is_array($post_type) ) { 
     2187                if ( is_array( $post_type ) ) { 
    21822188                        $post_type_cap = 'multiple_post_type'; 
    21832189                } else { 
    2184                         $post_type_object = get_post_type_object ( $post_type ); 
    2185                         if ( !empty($post_type_object) ) 
    2186                                 $post_type_cap = $post_type_object->capability_type; 
    2187                         else 
     2190                        $post_type_object = get_post_type_object( $post_type ); 
     2191                        if ( empty( $post_type_object ) ) 
    21882192                                $post_type_cap = $post_type; 
    21892193                } 
    21902194 
     
    22112215                        $post_type_object = get_post_type_object ( 'post' ); 
    22122216                } 
    22132217 
    2214                 if ( !empty($post_type_object) ) { 
    2215                         $post_type_cap = $post_type_object->capability_type; 
     2218                if ( ! empty( $post_type_object ) ) { 
    22162219                        $edit_cap = $post_type_object->cap->edit_post; 
    22172220                        $read_cap = $post_type_object->cap->read_post; 
    22182221                        $edit_others_cap = $post_type_object->cap->edit_others_posts; 
     
    24052408                        $groupby = 'GROUP BY ' . $groupby; 
    24062409                if ( !empty( $orderby ) ) 
    24072410                        $orderby = 'ORDER BY ' . $orderby; 
     2411 
    24082412                $found_rows = ''; 
    24092413                if ( !$q['no_found_rows'] && !empty($limits) ) 
    24102414                        $found_rows = 'SQL_CALC_FOUND_ROWS'; 
     
    24132417                if ( !$q['suppress_filters'] ) 
    24142418                        $this->request = apply_filters_ref_array('posts_request', array( $this->request, &$this ) ); 
    24152419 
     2420                if ( 'ids' == $q['fields'] ) { 
     2421                        $this->posts = $wpdb->get_col($this->request); 
     2422 
     2423                        return $this->posts; 
     2424                } 
     2425 
     2426                if ( 'id=>parent' == $q['fields'] ) { 
     2427                        $this->posts = $wpdb->get_results($this->request); 
     2428 
     2429                        $r = array(); 
     2430                        foreach ( $this->posts as $post ) 
     2431                                $r[ $post->ID ] = $post->post_parent; 
     2432 
     2433                        return $r; 
     2434                } 
     2435 
    24162436                $this->posts = $wpdb->get_results($this->request); 
     2437 
    24172438                // Raw results filter.  Prior to status checks. 
    24182439                if ( !$q['suppress_filters'] ) 
    24192440                        $this->posts = apply_filters_ref_array('posts_results', array( $this->posts, &$this ) ); 
     
    24722493 
    24732494                // Put sticky posts at the top of the posts array 
    24742495                $sticky_posts = get_option('sticky_posts'); 
    2475                 if ( $this->is_home && $page <= 1 && is_array($sticky_posts) && !empty($sticky_posts) && !$q['caller_get_posts'] ) { 
     2496                if ( $this->is_home && $page <= 1 && is_array($sticky_posts) && !empty($sticky_posts) && !$q['ignore_sticky_posts'] ) { 
    24762497                        $num_posts = count($this->posts); 
    24772498                        $sticky_offset = 0; 
    24782499                        // Loop over posts and relocate stickies to the front. 
     
    26042625 
    26052626        /** 
    26062627         * Rewind the posts and reset post index. 
     2628 
    26072629         * 
    26082630         * @since 1.5.0 
    26092631         * @access public 
     
    27352757                        if ( is_wp_error($term) || empty($term) ) 
    27362758                                return NULL; 
    27372759                        $term = $term[0]; 
    2738                         $this->queried_object = $term; 
    2739                         $this->queried_object_id = $term->term_id; 
     2760                        if ( $term && ! is_wp_error($term) )  { 
     2761                                $this->queried_object = $term; 
     2762                                $this->queried_object_id = $term->term_id; 
     2763                        } 
    27402764                } elseif ( $this->is_posts_page ) { 
    27412765                        $page_for_posts = get_option('page_for_posts'); 
    27422766                        $this->queried_object = & get_page( $page_for_posts ); 
     
    27912815                        $this->query($query); 
    27922816                } 
    27932817        } 
     2818 
     2819        /** 
     2820         * Is the query for an archive page? 
     2821         * 
     2822         * Month, Year, Category, Author, Post Type archive... 
     2823         * 
     2824         * @since 3.1.0 
     2825         * 
     2826         * @return bool 
     2827         */ 
     2828        function is_archive() { 
     2829                return (bool) $this->is_archive; 
     2830        } 
     2831 
     2832        /** 
     2833         * Is the query for a post type archive page? 
     2834         * 
     2835         * @since 3.1.0 
     2836         * 
     2837         * @param mixed $post_types Optional. Post type or array of posts types to check against. 
     2838         * @return bool 
     2839         */ 
     2840        function is_post_type_archive( $post_types = '' ) { 
     2841                if ( empty( $post_types ) || !$this->is_post_type_archive ) 
     2842                        return (bool) $this->is_post_type_archive; 
     2843 
     2844                if ( ! isset( $this->posts[0] ) ) 
     2845                        return false; 
     2846 
     2847                $post = $this->posts[0]; 
     2848 
     2849                return in_array( $post->post_type, (array) $post_types ); 
     2850        } 
     2851 
     2852        /** 
     2853         * Is the query for an attachment page? 
     2854         * 
     2855         * @since 3.1.0 
     2856         * 
     2857         * @return bool 
     2858         */ 
     2859        function is_attachment() { 
     2860                return (bool) $this->is_attachment; 
     2861        } 
     2862 
     2863        /** 
     2864         * Is the query for an author archive page? 
     2865         * 
     2866         * If the $author parameter is specified, this function will additionally 
     2867         * check if the query is for one of the authors specified. 
     2868         * 
     2869         * @since 3.1.0 
     2870         * 
     2871         * @param mixed $author Optional. User ID, nickname, nicename, or array of User IDs, nicknames, and nicenames 
     2872         * @return bool 
     2873         */ 
     2874        function is_author( $author = '' ) { 
     2875                if ( !$this->is_author ) 
     2876                        return false; 
     2877 
     2878                if ( empty($author) ) 
     2879                        return true; 
     2880 
     2881                $author_obj = $this->get_queried_object(); 
     2882 
     2883                $author = (array) $author; 
     2884 
     2885                if ( in_array( $author_obj->ID, $author ) ) 
     2886                        return true; 
     2887                elseif ( in_array( $author_obj->nickname, $author ) ) 
     2888                        return true; 
     2889                elseif ( in_array( $author_obj->user_nicename, $author ) ) 
     2890                        return true; 
     2891 
     2892                return false; 
     2893        } 
     2894 
     2895        /** 
     2896         * Is the query for a category archive page? 
     2897         * 
     2898         * If the $category parameter is specified, this function will additionally 
     2899         * check if the query is for one of the categories specified. 
     2900         * 
     2901         * @since 3.1.0 
     2902         * 
     2903         * @param mixed $category Optional. Category ID, name, slug, or array of Category IDs, names, and slugs. 
     2904         * @return bool 
     2905         */ 
     2906        function is_category( $category = '' ) { 
     2907                if ( !$this->is_category ) 
     2908                        return false; 
     2909 
     2910                if ( empty($category) ) 
     2911                        return true; 
     2912 
     2913                $cat_obj = $this->get_queried_object(); 
     2914 
     2915                $category = (array) $category; 
     2916 
     2917                if ( in_array( $cat_obj->term_id, $category ) ) 
     2918                        return true; 
     2919                elseif ( in_array( $cat_obj->name, $category ) ) 
     2920                        return true; 
     2921                elseif ( in_array( $cat_obj->slug, $category ) ) 
     2922                        return true; 
     2923 
     2924                return false; 
     2925        } 
     2926 
     2927        /** 
     2928         * Is the query for a tag archive page? 
     2929         * 
     2930         * If the $tag parameter is specified, this function will additionally 
     2931         * check if the query is for one of the tags specified. 
     2932         * 
     2933         * @since 3.1.0 
     2934         * 
     2935         * @param mixed $slug Optional. Tag slug or array of slugs. 
     2936         * @return bool 
     2937         */ 
     2938        function is_tag( $slug = '' ) { 
     2939                if ( !$this->is_tag ) 
     2940                        return false; 
     2941 
     2942                if ( empty( $slug ) ) 
     2943                        return true; 
     2944 
     2945                $tag_obj = $this->get_queried_object(); 
     2946 
     2947                $slug = (array) $slug; 
     2948 
     2949                if ( in_array( $tag_obj->slug, $slug ) ) 
     2950                        return true; 
     2951 
     2952                return false; 
     2953        } 
     2954 
     2955        /** 
     2956         * Is the query for a taxonomy archive page? 
     2957         * 
     2958         * If the $taxonomy parameter is specified, this function will additionally 
     2959         * check if the query is for that specific $taxonomy. 
     2960         * 
     2961         * If the $term parameter is specified in addition to the $taxonomy parameter, 
     2962         * this function will additionally check if the query is for one of the terms 
     2963         * specified. 
     2964         * 
     2965         * @since 3.1.0 
     2966         * 
     2967         * @param mixed $taxonomy Optional. Taxonomy slug or slugs. 
     2968         * @param mixed $term. Optional. Term ID, name, slug or array of Term IDs, names, and slugs. 
     2969         * @return bool 
     2970         */ 
     2971        function is_tax( $taxonomy = '', $term = '' ) { 
     2972                global $wp_taxonomies; 
     2973 
     2974                if ( !$this->is_tax ) 
     2975                        return false; 
     2976 
     2977                if ( empty( $taxonomy ) ) 
     2978                        return true; 
     2979 
     2980                $queried_object = $this->get_queried_object(); 
     2981                $tax_array = array_intersect( array_keys( $wp_taxonomies ), (array) $taxonomy ); 
     2982                $term_array = (array) $term; 
     2983 
     2984                if ( empty( $term ) ) // Only a Taxonomy provided 
     2985                        return isset( $queried_object->taxonomy ) && count( $tax_array ) && in_array( $queried_object->taxonomy, $tax_array ); 
     2986 
     2987                return isset( $queried_object->term_id ) && 
     2988                        count( array_intersect( 
     2989                                array( $queried_object->term_id, $queried_object->name, $queried_object->slug ), 
     2990                                $term_array 
     2991                        ) ); 
     2992        } 
     2993 
     2994        /** 
     2995         * Whether the current URL is within the comments popup window. 
     2996         * 
     2997         * @since 3.1.0 
     2998         * 
     2999         * @return bool 
     3000         */ 
     3001        function is_comments_popup() { 
     3002                return (bool) $this->is_comments_popup; 
     3003        } 
     3004 
     3005        /** 
     3006         * Is the query for a date archive? 
     3007         * 
     3008         * @since 3.1.0 
     3009         * 
     3010         * @return bool 
     3011         */ 
     3012        function is_date() { 
     3013                return (bool) $this->is_date; 
     3014        } 
     3015 
     3016 
     3017        /** 
     3018         * Is the query for a day archive? 
     3019         * 
     3020         * @since 3.1.0 
     3021         * 
     3022         * @return bool 
     3023         */ 
     3024        function is_day() { 
     3025                return (bool) $this->is_day; 
     3026        } 
     3027 
     3028        /** 
     3029         * Is the query for a feed? 
     3030         * 
     3031         * @since 3.1.0 
     3032         * 
     3033         * @return bool 
     3034         */ 
     3035        function is_feed() { 
     3036                return (bool) $this->is_feed; 
     3037        } 
     3038 
     3039        /** 
     3040         * Is the query for a comments feed? 
     3041         * 
     3042         * @since 3.1.0 
     3043         * 
     3044         * @return bool 
     3045         */ 
     3046        function is_comment_feed() { 
     3047                return (bool) $this->is_comment_feed; 
     3048        } 
     3049 
     3050        /** 
     3051         * Is the query for the front page of the site? 
     3052         * 
     3053         * This is for what is displayed at your site's main URL. 
     3054         * 
     3055         * Depends on the site's "Front page displays" Reading Settings 'show_on_front' and 'page_on_front'. 
     3056         * 
     3057         * If you set a static page for the front page of your site, this function will return 
     3058         * true when viewing that page. 
     3059         * 
     3060         * Otherwise the same as @see WP_Query::is_home() 
     3061         * 
     3062         * @since 3.1.0 
     3063         * @uses is_home() 
     3064         * @uses get_option() 
     3065         * 
     3066         * @return bool True, if front of site. 
     3067         */ 
     3068        function is_front_page() { 
     3069                // most likely case 
     3070                if ( 'posts' == get_option( 'show_on_front') && $this->is_home() ) 
     3071                        return true; 
     3072                elseif ( 'page' == get_option( 'show_on_front') && get_option( 'page_on_front' ) && $this->is_page( get_option( 'page_on_front' ) ) ) 
     3073                        return true; 
     3074                else 
     3075                        return false; 
     3076        } 
     3077 
     3078        /** 
     3079         * Is the query for the blog homepage? 
     3080         * 
     3081         * This is the page which shows the time based blog content of your site. 
     3082         * 
     3083         * Depends on the site's "Front page displays" Reading Settings 'show_on_front' and 'page_for_posts'. 
     3084         * 
     3085         * If you set a static page for the front page of your site, this function will return 
     3086         * true only on the page you set as the "Posts page". 
     3087         * 
     3088         * @see WP_Query::is_front_page() 
     3089         * 
     3090         * @since 3.1.0 
     3091         * 
     3092         * @return bool True if blog view homepage. 
     3093         */ 
     3094        function is_home() { 
     3095                return (bool) $this->is_home; 
     3096        } 
     3097 
     3098        /** 
     3099         * Is the query for a month archive? 
     3100         * 
     3101         * @since 3.1.0 
     3102         * 
     3103         * @return bool 
     3104         */ 
     3105        function is_month() { 
     3106                return (bool) $this->is_month; 
     3107        } 
     3108 
     3109        /** 
     3110         * Is the query for a single Page? 
     3111         * 
     3112         * If the $page parameter is specified, this function will additionally 
     3113         * check if the query is for one of the Pages specified. 
     3114         * 
     3115         * @see WP_Query::is_single() 
     3116         * @see WP_Query::is_singular() 
     3117         * 
     3118         * @since 3.1.0 
     3119         * 
     3120         * @param mixed $page Page ID, title, slug, or array of Page IDs, titles, and slugs. 
     3121         * @return bool 
     3122         */ 
     3123        function is_page( $page = '' ) { 
     3124                if ( !$this->is_page ) 
     3125                        return false; 
     3126 
     3127                if ( empty( $page ) ) 
     3128                        return true; 
     3129 
     3130                $page_obj = $this->get_queried_object(); 
     3131 
     3132                $page = (array) $page; 
     3133 
     3134                if ( in_array( $page_obj->ID, $page ) ) 
     3135                        return true; 
     3136                elseif ( in_array( $page_obj->post_title, $page ) ) 
     3137                        return true; 
     3138                else if ( in_array( $page_obj->post_name, $page ) ) 
     3139                        return true; 
     3140 
     3141                return false; 
     3142        } 
     3143 
     3144        /** 
     3145         * Is the query for paged result and not for the first page? 
     3146         * 
     3147         * @since 3.1.0 
     3148         * 
     3149         * @return bool                                                                   
     3150         */ 
     3151        function is_paged() { 
     3152                return (bool) $this->is_paged; 
     3153        } 
     3154 
     3155        /** 
     3156         * Is the query for a post or page preview? 
     3157         * 
     3158         * @since 3.1.0 
     3159         * 
     3160         * @return bool 
     3161         */ 
     3162        function is_preview() { 
     3163                return (bool) $this->is_preview; 
     3164        } 
     3165 
     3166        /** 
     3167         * Is the query for the robots file? 
     3168         * 
     3169         * @since 3.1.0 
     3170         * 
     3171         * @return bool 
     3172         */ 
     3173        function is_robots() { 
     3174                return (bool) $this->is_robots; 
     3175        } 
     3176 
     3177        /** 
     3178         * Is the query for a search? 
     3179         * 
     3180         * @since 3.1.0 
     3181         * 
     3182         * @return bool 
     3183         */ 
     3184        function is_search() { 
     3185                return (bool) $this->is_search; 
     3186        } 
     3187 
     3188        /** 
     3189         * Is the query for a single post? 
     3190         * 
     3191         * If the $post parameter is specified, this function will additionally 
     3192         * check if the query is for one of the Posts specified. 
     3193         * 
     3194         * Can also be used for attachments or any other post type except pages. 
     3195         * 
     3196         * @see WP_Query::is_page() 
     3197         * @see WP_Query::is_singular() 
     3198         * 
     3199         * @since 3.1.0 
     3200         * 
     3201         * @param mixed $post Post ID, title, slug, or array of Post IDs, titles, and slugs. 
     3202         * @return bool 
     3203         */ 
     3204        function is_single( $post = '' ) { 
     3205                if ( !$this->is_single ) 
     3206                        return false; 
     3207 
     3208                if ( empty($post) ) 
     3209                        return true; 
     3210 
     3211                $post_obj = $this->get_queried_object(); 
     3212 
     3213                $post = (array) $post; 
     3214 
     3215                if ( in_array( $post_obj->ID, $post ) ) 
     3216                        return true; 
     3217                elseif ( in_array( $post_obj->post_title, $post ) ) 
     3218                        return true; 
     3219                elseif ( in_array( $post_obj->post_name, $post ) ) 
     3220                        return true; 
     3221 
     3222                return false; 
     3223        } 
     3224 
     3225        /** 
     3226         * Is the query for a single post of any post type (post, attachment, page, ... )? 
     3227         * 
     3228         * If the $post_types parameter is specified, this function will additionally 
     3229         * check if the query is for one of the Posts Types specified. 
     3230         * 
     3231         * @see WP_Query::is_page() 
     3232         * @see WP_Query::is_single() 
     3233         * 
     3234         * @since 3.1.0 
     3235         * 
     3236         * @param mixed $post_types Optional. Post Type or array of Post Types 
     3237         * @return bool 
     3238         */ 
     3239        function is_singular( $post_types = '' ) { 
     3240                if ( empty( $post_types ) || !$this->is_singular ) 
     3241                        return (bool) $this->is_singular; 
     3242 
     3243                $post_obj = $this->get_queried_object(); 
     3244 
     3245                return in_array( $post_obj->post_type, (array) $post_types ); 
     3246        } 
     3247 
     3248        /** 
     3249         * Is the query for a specific time? 
     3250         * 
     3251         * @since 3.1.0 
     3252         * 
     3253         * @return bool 
     3254         */ 
     3255        function is_time() { 
     3256                return (bool) $this->is_time; 
     3257        } 
     3258 
     3259        /** 
     3260         * Is the query for a trackback endpoint call? 
     3261         * 
     3262         * @since 3.1.0 
     3263         * 
     3264         * @return bool 
     3265         */ 
     3266        function is_trackback() { 
     3267                return (bool) $this->is_trackback; 
     3268        } 
     3269 
     3270        /** 
     3271         * Is the query for a specific year? 
     3272         * 
     3273         * @since 3.1.0 
     3274         * 
     3275         * @return bool 
     3276         */ 
     3277        function is_year() { 
     3278                return (bool) $this->is_year; 
     3279        } 
     3280 
     3281        /** 
     3282         * Is the query a 404 (returns no results)? 
     3283         * 
     3284         * @since 3.1.0 
     3285         * 
     3286         * @return bool 
     3287         */ 
     3288        function is_404() { 
     3289                return (bool) $this->is_404; 
     3290        } 
    27943291} 
    27953292 
    27963293/** 
     
    28093306        if ( is_404() && '' != $wp_query->query_vars['name'] ) : 
    28103307                global $wpdb; 
    28113308 
    2812                 $query = "SELECT post_id FROM $wpdb->postmeta, $wpdb->posts WHERE ID = post_id AND meta_key = '_wp_old_slug' AND meta_value='" . $wp_query->query_vars['name'] . "'"; 
     3309                // Guess the current post_type based on the query vars. 
     3310                if ( get_query_var('post_type') ) 
     3311                        $post_type = get_query_var('post_type'); 
     3312                elseif ( !empty($wp_query->query_vars['pagename']) ) 
     3313                        $post_type = 'page'; 
     3314                else 
     3315                        $post_type = 'post'; 
    28133316 
     3317                $query = $wpdb->prepare("SELECT post_id FROM $wpdb->postmeta, $wpdb->posts WHERE ID = post_id AND post_type = %s AND meta_key = '_wp_old_slug' AND meta_value = %s", $post_type, $wp_query->query_vars['name']); 
     3318 
    28143319                // if year, monthnum, or day have been specified, make our query more precise 
    28153320                // just in case there are multiple identical _wp_old_slug values 
    28163321                if ( '' != $wp_query->query_vars['year'] ) 
    2817                         $query .= " AND YEAR(post_date) = '{$wp_query->query_vars['year']}'"; 
     3322                        $query .= $wpdb->prepare(" AND YEAR(post_date) = %d", $wp_query->query_vars['year']); 
    28183323                if ( '' != $wp_query->query_vars['monthnum'] ) 
    2819                         $query .= " AND MONTH(post_date) = '{$wp_query->query_vars['monthnum']}'"; 
     3324                        $query .= $wpdb->prepare(" AND MONTH(post_date) = %d", $wp_query->query_vars['monthnum']); 
    28203325                if ( '' != $wp_query->query_vars['day'] ) 
    2821                         $query .= " AND DAYOFMONTH(post_date) = '{$wp_query->query_vars['day']}'"; 
     3326                        $query .= $wpdb->prepare(" AND DAYOFMONTH(post_date) = %d", $wp_query->query_vars['day']); 
    28223327 
    28233328                $id = (int) $wpdb->get_var($query); 
    28243329 
    2825                 if ( !$id ) 
     3330                if ( ! $id ) 
    28263331                        return; 
    28273332 
    28283333                $link = get_permalink($id); 
     
    28453350 * @return bool True when finished. 
    28463351 */ 
    28473352function setup_postdata($post) { 
    2848         global $id, $authordata, $day, $currentmonth, $page, $pages, $multipage, $more, $numpages; 
     3353        global $id, $authordata, $currentday, $currentmonth, $page, $pages, $multipage, $more, $numpages; 
    28493354 
    28503355        $id = (int) $post->ID; 
    28513356 
    28523357        $authordata = get_userdata($post->post_author); 
    28533358 
    2854         $day = mysql2date('d.m.y', $post->post_date, false); 
     3359        $currentday = mysql2date('d.m.y', $post->post_date, false); 
    28553360        $currentmonth = mysql2date('m', $post->post_date, false); 
    28563361        $numpages = 1; 
    28573362        $page = get_query_var('page');