Мне нужно изменить порядок заказов на странице администратора Woocommerce. У меня есть настраиваемый столбец с датой / временем, и на основе этих данных я изменю порядок заказов. Это не строгая фильтрация по дате / времени (от самых старых к новейшим и наоборот).
Решающим фактором является то, сколько времени осталось до даты, когда заказ должен быть готов. В моем случае это один час. В этот момент заказ должен быть вверху списка, независимо от того, был ли он создан, например неделя go.
Примеры:
1) Порядок по умолчанию (самые новые вверху, самые старые внизу)
+--------------------------------+------------+---------+--------------------+-------+
| ACTUAL DATE: 28.5.2020 - 15:00 | | | | |
+--------------------------------+------------+---------+--------------------+-------+
| ORDER | DATE | STATUS | DATE/TIME (custom) | PRICE |
| Frank | 28.05.2020 | PENDING | - | 100 |
| Lucy | 27.05.2020 | DONE | - | 50 |
| Thomas | 27.05.2020 | DONE | - | 80 |
| Jane | 26.05.2020 | PENDING | 28.5.2020 - 16:00 | 90 |
+--------------------------------+------------+---------+--------------------+-------+
2) Остался один час для выполнения заказа Джейн
+--------------------------------+------------+---------+--------------------+-------+
| ACTUAL DATE: 28.5.2020 - 15:00 | | | | |
+--------------------------------+------------+---------+--------------------+-------+
| ORDER | DATE | STATUS | DATE/TIME (custom) | PRICE |
| Jane | 26.05.2020 | PENDING | 28.5.2020 - 16:00 | 90 |
| Frank | 28.05.2020 | PENDING | - | 100 |
| Lucy | 27.05.2020 | DONE | - | 50 |
| Thomas | 27.05.2020 | DONE | - | 80 |
+--------------------------------+------------+---------+--------------------+-------+
3) На выполнение заказа Джейн осталось два часа
+--------------------------------+------------+---------+--------------------+-------+
| ACTUAL DATE: 28.5.2020 - 14:00 | | | | |
+--------------------------------+------------+---------+--------------------+-------+
| ORDER | DATE | STATUS | DATE/TIME (custom) | PRICE |
| Frank | 28.05.2020 | PENDING | - | 100 |
| Lucy | 27.05.2020 | DONE | - | 50 |
| Thomas | 27.05.2020 | DONE | - | 80 |
| Jane | 26.05.2020 | PENDING | 28.5.2020 - 16:00 | 90 |
+--------------------------------+------------+---------+--------------------+-------+
Не могли бы вы подсказать, с чего начать? Какие хуки в моей функции дочерней темы. php мне следует использовать?
EDIT: Пример кода для добавления нового столбца:
// Add column
add_filter( 'manage_edit-shop_order_columns', 'custom_delivery_time' );
function custom_delivery_time( $columns ) {
$new_columns = ( is_array( $columns ) ) ? $columns : array();
unset( $new_columns[ 'order_actions' ] );
$new_columns['custom_datetime'] = 'Date / Time';
$new_columns[ 'order_actions' ] = $columns[ 'order_actions' ];
return $new_columns;
}
// Change order of columns, populate
add_action( 'manage_shop_order_posts_custom_column', 'custom_woo_admin_value', 2 );
function custom_woo_admin_value( $column ) {
global $post, $the_order;
if ( empty( $the_order ) || $the_order->get_id() != $post->ID ) {
$the_order = wc_get_order( $post->ID );
}
if ( $column == 'custom_datetime' ) {
$custom_datetime = $the_order->get_custom_datetime();
echo empty($custom_datetime) ? '' : $custom_datetime;
}
}