wc_change_get_terms_defaults()WC 3.6.0

Change get terms defaults for attributes to order by the sorting setting, or default to menu_order for sortable taxonomies.

Hooks from the function

Return

Array.

Usage

wc_change_get_terms_defaults( $defaults, $taxonomies );
$defaults(array) (required)
An array of default get_terms() arguments.
$taxonomies(array) (required)
An array of taxonomies.

Changelog

Since 3.6.0 Introduced.
Since 3.6.0 Sorting options are now set as the default automatically, so you no longer have to request to orderby menu_order.

wc_change_get_terms_defaults() code WC 8.7.0

function wc_change_get_terms_defaults( $defaults, $taxonomies ) {
	if ( is_array( $taxonomies ) && 1 < count( $taxonomies ) ) {
		return $defaults;
	}
	$taxonomy = is_array( $taxonomies ) ? (string) current( $taxonomies ) : $taxonomies;
	$orderby  = 'name';

	if ( taxonomy_is_product_attribute( $taxonomy ) ) {
		$orderby = wc_attribute_orderby( $taxonomy );
	} elseif ( in_array( $taxonomy, apply_filters( 'woocommerce_sortable_taxonomies', array( 'product_cat' ) ), true ) ) {
		$orderby = 'menu_order';
	}

	// Change defaults. Invalid values will be changed later @see wc_change_pre_get_terms.
	// These are in place so we know if a specific order was requested.
	switch ( $orderby ) {
		case 'menu_order':
		case 'name_num':
		case 'parent':
			$defaults['orderby'] = $orderby;
			break;
	}

	return $defaults;
}