Changeset 14072 for trunk/wp-includes/query.php
- Timestamp:
- 04/11/2010 01:51:24 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/wp-includes/query.php
r14027 r14072 1713 1713 $where .= " AND DAYOFMONTH($wpdb->posts.post_date)='" . $q['day'] . "'"; 1714 1714 1715 // If we've got a post_type AND its not "any" post_type. 1715 1716 if ( !empty($q['post_type']) && 'any' != $q['post_type'] ) { 1716 $_pt = is_array($q['post_type']) ? $q['post_type'] : array($q['post_type']);1717 foreach ( $_pt as $_post_type ) {1718 if ( empty($q[ $_post_type]) )1717 foreach ( (array)$q['post_type'] as $_post_type ) { 1718 $ptype_obj = get_post_type_object($_post_type); 1719 if ( !$ptype_obj || !$ptype_obj->query_var || empty($q[ $ptype_obj->query_var ]) ) 1719 1720 continue; 1720 1721 1721 $q[ $_post_type ] = str_replace('%2F', '/', urlencode(urldecode($q[ $_post_type ]))); 1722 $post_type_object = get_post_type_object($_post_type); 1723 if ( ! $post_type_object->hierarchical || strpos($q[ $_post_type ], '/') === false) { 1724 $q['name'] = $q[ $_post_type ] = sanitize_title($q[ $_post_type ]); 1725 $_names[] = $q[ $_post_type ]; 1722 if ( ! $ptype_obj->hierarchical || strpos($q[ $ptype_obj->query_var ], '/') === false) { 1723 // Non-hierarchical post_types & parent-level-hierarchical post_types can directly use 'name' 1724 $q['name'] = $q[ $ptype_obj->query_var ]; 1726 1725 } else { 1727 // Hierarchical post type, need to look deeper to see if its an attachment or this post_type 1728 if ( isset($this->queried_object_id) ) { 1729 $reqpage = $this->queried_object_id; 1730 } else { 1731 $reqpage = get_page_by_path($q[ $_post_type ], OBJECT, $_post_type); 1732 if ( !empty($reqpage) ) 1733 $reqpage = $reqpage->ID; 1734 else 1735 $reqpage = 0; 1736 } 1737 $_ids[] = $reqpage; 1738 $reqpage_obj = get_page($reqpage); 1739 if ( is_object($reqpage_obj) && 'attachment' == $reqpage_obj->post_type ) { 1740 $this->is_attachment = true; 1741 $q['attachment_id'] = $reqpage; 1742 $post_type = $q['post_type'] = 'attachment'; 1743 } 1726 // Hierarchical post_types will operate through the 1727 $q['pagename'] = $q[ $ptype_obj->query_var ]; 1728 $q['name'] = ''; 1744 1729 } 1730 1731 // Only one request for a slug is possible, this is why name & pagename are overwritten above. 1732 break; 1745 1733 } //end foreach 1746 1747 if ( !empty($_names) || !empty($_ids) ) { 1748 $where .= ' AND (1=0'; 1749 if ( !empty($_names) ) 1750 $where .= " OR $wpdb->posts.post_name IN('" . implode("', '", $_names) . "')"; 1751 if ( !empty($_ids) ) { 1752 $_ids = array_map('absint', $_ids); 1753 $where .= " OR $wpdb->posts.ID IN(" . implode(',', $_ids) . ")"; 1754 } 1755 $where .= ')'; 1756 } 1757 unset($_ids, $_names, $_pt, $_post_type); 1758 } elseif ( '' != $q['name'] ) { 1734 unset($ptype_obj); 1735 } 1736 1737 if ( '' != $q['name'] ) { 1759 1738 $q['name'] = sanitize_title($q['name']); 1760 1739 $where .= " AND $wpdb->posts.post_name = '" . $q['name'] . "'"; 1761 1740 } elseif ( '' != $q['pagename'] ) { 1762 if ( isset($this->queried_object_id) ) 1741 if ( isset($this->queried_object_id) ) { 1763 1742 $reqpage = $this->queried_object_id; 1764 else { 1765 $reqpage = get_page_by_path($q['pagename']); 1743 } else { 1744 if ( 'page' != $q['post_type'] ) { 1745 foreach ( (array)$q['post_type'] as $_post_type ) { 1746 $ptype_obj = get_post_type_object($_post_type); 1747 if ( !$ptype_obj || !$ptype_obj->hierarchical ) 1748 continue; 1749 1750 $reqpage = get_page_by_path($q['pagename'], OBJECT, $_post_type); 1751 if ( $reqpage ) 1752 break; 1753 } 1754 unset($ptype_obj); 1755 } else { 1756 $reqpage = get_page_by_path($q['pagename']); 1757 } 1766 1758 if ( !empty($reqpage) ) 1767 1759 $reqpage = $reqpage->ID; … … 1780 1772 if ( is_object($reqpage_obj) && 'attachment' == $reqpage_obj->post_type ) { 1781 1773 $this->is_attachment = true; 1774 $post_type = $q['post_type'] = 'attachment'; 1782 1775 $this->is_page = true; 1783 1776 $q['attachment_id'] = $reqpage;
Note: See TracChangeset
for help on using the changeset viewer.