public static function get_terms($args = null, $maybe_args = array(), $TermClass = '\\Timber\\Term')
{
if (is_string($maybe_args) && !strstr($maybe_args, '=')) {
//the user is sending the $TermClass in the second argument
$TermClass = $maybe_args;
}
if (is_string($maybe_args) && strstr($maybe_args, '=')) {
parse_str($maybe_args, $maybe_args);
}
if (is_string($args) && strstr($args, '=')) {
//a string and a query string!
$parsed = self::get_term_query_from_query_string($args);
if (is_array($maybe_args)) {
$parsed->args = array_merge($parsed->args, $maybe_args);
}
return self::handle_term_query($parsed->taxonomies, $parsed->args, $TermClass);
} else {
if (is_string($args)) {
//its just a string with a single taxonomy
$parsed = self::get_term_query_from_string($args);
if (is_array($maybe_args)) {
$parsed->args = array_merge($parsed->args, $maybe_args);
}
return self::handle_term_query($parsed->taxonomies, $parsed->args, $TermClass);
} else {
if (is_array($args) && Helper::is_array_assoc($args)) {
//its an associative array, like a good ole query
$parsed = self::get_term_query_from_assoc_array($args);
return self::handle_term_query($parsed->taxonomies, $parsed->args, $TermClass);
} else {
if (is_array($args)) {
//its just an array of strings or IDs (hopefully)
$parsed = self::get_term_query_from_array($args);
if (is_array($maybe_args)) {
$parsed->args = array_merge($parsed->args, $maybe_args);
}
return self::handle_term_query($parsed->taxonomies, $parsed->args, $TermClass);
} else {
if (is_null($args)) {
return self::handle_term_query(get_taxonomies(), array(), $TermClass);
}
}
}
}
}
return null;
}