Automattic\WooCommerce\Internal\DataStores\Orders
OrdersTableDataStore::init_default_taxonomies
Set default taxonomies for the order.
Note: This is re-implementation of part of WP core's wp_insert_post Since the code block that set default taxonomies is not filterable, we have to re-implement it.
Метод класса: OrdersTableDataStore{}
Хуков нет.
Возвращает
Массив. Sanitized tax input with default taxonomies.
Использование
$OrdersTableDataStore = new OrdersTableDataStore(); $OrdersTableDataStore->init_default_taxonomies( $order, $sanitized_tax_input );
- $order(WC_Abstract_Order) (обязательный)
- Order object.
- $sanitized_tax_input(массив) (обязательный)
- Sanitized taxonomy input.
Код OrdersTableDataStore::init_default_taxonomies() OrdersTableDataStore::init default taxonomies WC 10.3.5
public function init_default_taxonomies( \WC_Abstract_Order $order, array $sanitized_tax_input ) {
if ( 'auto-draft' === $order->get_status() ) {
return $sanitized_tax_input;
}
foreach ( get_object_taxonomies( $order->get_type(), 'object' ) as $taxonomy => $tax_object ) {
if ( empty( $tax_object->default_term ) ) {
return $sanitized_tax_input;
}
// Filter out empty terms.
if ( isset( $sanitized_tax_input[ $taxonomy ] ) && is_array( $sanitized_tax_input[ $taxonomy ] ) ) {
$sanitized_tax_input[ $taxonomy ] = array_filter( $sanitized_tax_input[ $taxonomy ] );
}
// Passed custom taxonomy list overwrites the existing list if not empty.
$terms = wp_get_object_terms( $order->get_id(), $taxonomy, array( 'fields' => 'ids' ) );
if ( ! empty( $terms ) && empty( $sanitized_tax_input[ $taxonomy ] ) ) {
$sanitized_tax_input[ $taxonomy ] = $terms;
}
if ( empty( $sanitized_tax_input[ $taxonomy ] ) ) {
$default_term_id = get_option( 'default_term_' . $taxonomy );
if ( ! empty( $default_term_id ) ) {
$sanitized_tax_input[ $taxonomy ] = array( (int) $default_term_id );
}
}
}
return $sanitized_tax_input;
}