Code standards, and check orderby, not fields

This commit is contained in:
Mike Jolley 2014-02-07 11:38:57 +00:00
parent dbcb9a6b58
commit 65cfc420a1
1 changed files with 21 additions and 8 deletions

View File

@ -23,10 +23,11 @@ function wc_get_product_terms( $product_id, $taxonomy, $args = array() ) {
if ( ! taxonomy_exists( $taxonomy ) ) if ( ! taxonomy_exists( $taxonomy ) )
return array(); return array();
if ( empty( $args['fields'] ) && taxonomy_is_product_attribute( $taxonomy ) ) { if ( empty( $args['orderby'] ) && taxonomy_is_product_attribute( $taxonomy ) ) {
$args['fields'] = wc_attribute_orderby( $taxonomy ); $args['orderby'] = wc_attribute_orderby( $taxonomy );
} }
// Support ordering by parent
if ( ! empty( $args['orderby'] ) && $args['orderby'] == 'parent' ) { if ( ! empty( $args['orderby'] ) && $args['orderby'] == 'parent' ) {
$fields = isset( $args['fields'] ) ? $args['fields'] : 'all'; $fields = isset( $args['fields'] ) ? $args['fields'] : 'all';
$orderby_parent = true; $orderby_parent = true;
@ -315,13 +316,19 @@ function wc_terms_clauses( $clauses, $taxonomies, $args ) {
global $wpdb, $woocommerce; global $wpdb, $woocommerce;
// No sorting when menu_order is false // No sorting when menu_order is false
if ( isset($args['menu_order']) && $args['menu_order'] == false ) return $clauses; if ( isset( $args['menu_order'] ) && $args['menu_order'] == false ) {
return $clauses;
}
// No sorting when orderby is non default // No sorting when orderby is non default
if ( isset($args['orderby']) && $args['orderby'] != 'name' ) return $clauses; if ( isset( $args['orderby'] ) && $args['orderby'] != 'name' ) {
return $clauses;
}
// No sorting in admin when sorting by a column // No sorting in admin when sorting by a column
if ( is_admin() && isset($_GET['orderby']) ) return $clauses; if ( is_admin() && isset( $_GET['orderby'] ) ) {
return $clauses;
}
// wordpress should give us the taxonomies asked when calling the get_terms function. Only apply to categories and pa_ attributes // wordpress should give us the taxonomies asked when calling the get_terms function. Only apply to categories and pa_ attributes
$found = false; $found = false;
@ -331,7 +338,9 @@ function wc_terms_clauses( $clauses, $taxonomies, $args ) {
break; break;
} }
} }
if (!$found) return $clauses; if ( ! $found ) {
return $clauses;
}
// Meta name // Meta name
if ( ! empty( $taxonomies[0] ) && taxonomy_is_product_attribute( $taxonomies[0] ) ) { if ( ! empty( $taxonomies[0] ) && taxonomy_is_product_attribute( $taxonomies[0] ) ) {
@ -341,13 +350,17 @@ function wc_terms_clauses( $clauses, $taxonomies, $args ) {
} }
// query fields // query fields
if ( strpos('COUNT(*)', $clauses['fields']) === false ) $clauses['fields'] .= ', tm.* '; if ( strpos( 'COUNT(*)', $clauses['fields'] ) === false ) {
$clauses['fields'] .= ', tm.* ';
}
//query join //query join
$clauses['join'] .= " LEFT JOIN {$wpdb->woocommerce_termmeta} AS tm ON (t.term_id = tm.woocommerce_term_id AND tm.meta_key = '". $meta_name ."') "; $clauses['join'] .= " LEFT JOIN {$wpdb->woocommerce_termmeta} AS tm ON (t.term_id = tm.woocommerce_term_id AND tm.meta_key = '". $meta_name ."') ";
// default to ASC // default to ASC
if ( ! isset($args['menu_order']) || ! in_array( strtoupper($args['menu_order']), array('ASC', 'DESC')) ) $args['menu_order'] = 'ASC'; if ( ! isset( $args['menu_order'] ) || ! in_array( strtoupper($args['menu_order']), array('ASC', 'DESC')) ) {
$args['menu_order'] = 'ASC';
}
$order = "ORDER BY tm.meta_value+0 " . $args['menu_order']; $order = "ORDER BY tm.meta_value+0 " . $args['menu_order'];