Throw pages into search queries. Let's see how they handle. see #5149

git-svn-id: https://develop.svn.wordpress.org/trunk@6467 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
Ryan Boren 2007-12-22 08:19:10 +00:00
parent 93cc3c8e10
commit 5b1a91e0c3
1 changed files with 10 additions and 5 deletions

View File

@ -749,8 +749,12 @@ class WP_Query {
$search = ''; $search = '';
$groupby = ''; $groupby = '';
if ( !isset($q['post_type']) ) if ( !isset($q['post_type']) ) {
$q['post_type'] = 'post'; if ( $this->is_search )
$q['post_type'] = 'any';
else
$q['post_type'] = 'post';
}
$post_type = $q['post_type']; $post_type = $q['post_type'];
if ( !isset($q['posts_per_page']) || $q['posts_per_page'] == 0 ) if ( !isset($q['posts_per_page']) || $q['posts_per_page'] == 0 )
$q['posts_per_page'] = get_option('posts_per_page'); $q['posts_per_page'] = get_option('posts_per_page');
@ -885,8 +889,7 @@ class WP_Query {
$q['s'] = stripslashes($q['s']); $q['s'] = stripslashes($q['s']);
if ($q['sentence']) { if ($q['sentence']) {
$q['search_terms'] = array($q['s']); $q['search_terms'] = array($q['s']);
} } else {
else {
preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $q[s], $matches); preg_match_all('/".*?("|$)|((?<=[\\s",+])|^)[^\\s",+]+/', $q[s], $matches);
$q['search_terms'] = array_map(create_function('$a', 'return trim($a, "\\"\'\\n\\r ");'), $matches[0]); $q['search_terms'] = array_map(create_function('$a', 'return trim($a, "\\"\'\\n\\r ");'), $matches[0]);
} }
@ -897,7 +900,7 @@ class WP_Query {
$search .= "{$searchand}((post_title LIKE '{$n}{$term}{$n}') OR (post_content LIKE '{$n}{$term}{$n}'))"; $search .= "{$searchand}((post_title LIKE '{$n}{$term}{$n}') OR (post_content LIKE '{$n}{$term}{$n}'))";
$searchand = ' AND '; $searchand = ' AND ';
} }
$term = addslashes_gpc($q['s']); $term = $wpdb->escape($q['s']);
if (!$q['sentence'] && count($q['search_terms']) > 1 && $q['search_terms'][0] != $q['s'] ) if (!$q['sentence'] && count($q['search_terms']) > 1 && $q['search_terms'][0] != $q['s'] )
$search .= " OR (post_title LIKE '{$n}{$term}{$n}') OR (post_content LIKE '{$n}{$term}{$n}')"; $search .= " OR (post_title LIKE '{$n}{$term}{$n}') OR (post_content LIKE '{$n}{$term}{$n}')";
@ -1145,6 +1148,8 @@ class WP_Query {
$where .= " AND post_type = 'page'"; $where .= " AND post_type = 'page'";
} elseif ($this->is_single) { } elseif ($this->is_single) {
$where .= " AND post_type = 'post'"; $where .= " AND post_type = 'post'";
} elseif ( 'any' == $post_type ) {
$where .= '';
} else { } else {
$where .= " AND post_type = '$post_type'"; $where .= " AND post_type = '$post_type'";
} }