static function pre_user_query($query) { global $wpdb; $q =& $query->query_vars; P2P_Query::expand_shortcut_qv($q); if (isset($q['connected_items'])) { $item = $q['connected_items']; } else { $item = 'any'; } $r = P2P_Query::expand_connected_type($q, $item, 'user'); if (false === $r) { $query->query_where = " AND 1=0"; return; } // alter query $qv = P2P_Query::get_qv($q); if (!$qv) { return; } $map = array('fields' => 'query_fields', 'join' => 'query_from', 'where' => 'query_where', 'orderby' => 'query_orderby'); $clauses = array(); foreach ($map as $clause => $key) { $clauses[$clause] = $query->{$key}; } $clauses = P2P_Query::alter_clauses($clauses, $qv, "{$wpdb->users}.ID"); if (0 !== strpos($clauses['orderby'], 'ORDER BY ')) { $clauses['orderby'] = 'ORDER BY ' . $clauses['orderby']; } foreach ($map as $clause => $key) { $query->{$key} = $clauses[$clause]; } }
static function posts_clauses($clauses, $wp_query) { global $wpdb; $qv = P2P_Query::get_qv($wp_query->query_vars); if (!$qv) { return $clauses; } $wp_query->_p2p_cache = true; return P2P_Query::alter_clauses($clauses, $qv, "{$wpdb->posts}.ID"); }