<!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>[16511] trunk/wp-includes:
If the queried term does not exist make sure no posts are returned in the query rather than falling through to querying all posts
.</title>
</head>
<body>
<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.wordpress.org/changeset/16511">16511</a></dd>
<dt>Author</dt> <dd>ryan</dd>
<dt>Date</dt> <dd>2010-11-20 21:10:20 +0000 (Sat, 20 Nov 2010)</dd>
</dl>
<h3>Log Message</h3>
<pre>If the queried term does not exist make sure no posts are returned in the query rather than falling through to querying all posts. Fixes 404s when querying cats that do not exist. see <a href="http://trac.wordpress.org/ticket/12891">#12891</a></pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkwpincludesqueryphp">trunk/wp-includes/query.php</a></li>
<li><a href="#trunkwpincludestaxonomyphp">trunk/wp-includes/taxonomy.php</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkwpincludesqueryphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/query.php (16510 => 16511)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/query.php        2010-11-20 19:27:12 UTC (rev 16510)
+++ trunk/wp-includes/query.php        2010-11-20 21:10:20 UTC (rev 16511)
</span><span class="lines">@@ -1947,8 +1947,12 @@
</span><span class="cx">                 if ( !empty( $this->tax_query ) ) {
</span><span class="cx">                         $clauses = call_user_func_array( 'get_tax_sql', array( $this->tax_query, $wpdb->posts, 'ID', &$this) );
</span><span class="cx">
</span><del>-                        $join .= $clauses['join'];
-                        $where .= $clauses['where'];
</del><ins>+                        if ( empty($clauses['join']) && empty($clauses['where']) ) {
+                                $where .= ' AND 0 = 1';        
+                        } else {
+                                $join .= $clauses['join'];
+                                $where .= $clauses['where'];
+                        }
</ins><span class="cx">
</span><span class="cx">                         if ( $this->is_tax ) {
</span><span class="cx">                                 if ( empty($post_type) ) {
</span></span></pre></div>
<a id="trunkwpincludestaxonomyphp"></a>
<div class="modfile"><h4>Modified: trunk/wp-includes/taxonomy.php (16510 => 16511)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/wp-includes/taxonomy.php        2010-11-20 19:27:12 UTC (rev 16510)
+++ trunk/wp-includes/taxonomy.php        2010-11-20 21:10:20 UTC (rev 16511)
</span><span class="lines">@@ -539,7 +539,7 @@
</span><span class="cx">
</span><span class="cx">                 foreach ( $taxonomies as $taxonomy ) {
</span><span class="cx">                         if ( ! taxonomy_exists( $taxonomy ) )
</span><del>-                                return ' AND 0 = 1';
</del><ins>+                                return array( 'join' => '', 'where' => ' AND 0 = 1');
</ins><span class="cx">                 }
</span><span class="cx">
</span><span class="cx">                 $taxonomies = "'" . implode( "', '", $taxonomies ) . "'";
</span><span class="lines">@@ -592,6 +592,7 @@
</span><span class="cx">                         )";
</span><span class="cx">                 }
</span><span class="cx">         }
</span><ins>+
</ins><span class="cx">         return compact( 'join', 'where' );
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>