function get_categories( $args = '' ) {
$defaults = array( 'taxonomy' => 'category' );
$args = wp_parse_args( $args, $defaults );

$taxonomy = $args['taxonomy'];

/**
* Filter the taxonomy used to retrieve terms when calling {@see get_categories()}.
*
* @since 2.7.0
*
* @param string $taxonomy Taxonomy to retrieve terms from.
* @param array $args An array of arguments. See {@see get_terms()}.
*/
$taxonomy = apply_filters( 'get_categories_taxonomy', $taxonomy, $args );

// Back compat
if ( isset($args['type']) && 'link' == $args['type'] ) {
/* translators: 1: "type => link", 2: "taxonomy => link_category" alternative */
_deprecated_argument( __FUNCTION__, '3.0',
sprintf( __( '%1$s is deprecated. Use %2$s instead.' ),
'type => link',
'taxonomy => link_category'
)
);
$taxonomy = $args['taxonomy'] = 'link_category';
}

$categories = get_terms( $taxonomy, $args );

if ( is_wp_error( $categories ) ) {
$categories = array();
} else {
$categories = (array) $categories;
foreach ( array_keys( $categories ) as $k ) {
_make_cat_compat( $categories[ $k ] );
}
}

return $categories;
}