malized[] = $this->normalize_criteria( $condition ); break; } } return $normalized; } private function normalize_criteria( $criteria ) { $criteria_length = count( $criteria ); if ( 2 === $criteria_length ) { $criteria = array( $criteria[0], '=', $criteria[1] ); } // Convert slug to id if conditional logic defined using slug for terms. if ( strrpos( $criteria[0], 'slug:', - strlen( $criteria[0] ) ) !== false ) { $criteria[0] = ltrim( $criteria[0], 'slug:' ); $criteria[2] = $this->slug_to_id( $criteria[2] ); } return $criteria; } private function slug_to_id( $slugs ) { global $wpdb; $slugs = (array) $slugs; $sql = "SELECT term_id FROM {$wpdb->terms} WHERE slug IN(" . implode( ', ', array_fill( 0, count( $slugs ), '%s' ) ) . ')'; $prepared = call_user_func_array( array( $wpdb, 'prepare' ), array_merge( array( $sql ), $slugs ) ); return array_map( 'intval', $wpdb->get_col( $prepared ) ); } }