Сортировка заказов по пользовательскому полю WordPress
add_action('woocommerce_checkout_create_order', 'before_checkout_create_order', 20, 2);
function before_checkout_create_order( $order, $data ) {
if (isset($_POST['delivery_date'])) {
$delivery_date = sanitize_text_field($_POST['delivery_date']);
$order->update_meta_data( '_delivery_date', $delivery_date );
error_log("Delivery date saved for order : $delivery_date");
} else {
error_log("No delivery date found in POST request for order $order_id");
}
}
add_filter( 'manage_woocommerce_page_wc-orders_columns', 'add_delivery_date_column' );
function add_delivery_date_column( $columns ) {
$new_columns = array();
foreach ( $columns as $key => $column ) {
$new_columns[ $key ] = $column;
if ( 'order_status' === $key ) {
$new_columns['delivery_date'] = __( 'Delivery Date', 'your-text-domain' );
}
}
return $new_columns;
}
add_action( 'manage_woocommerce_page_wc-orders_custom_column', 'display_delivery_date_column_content', 10, 2 );
function display_delivery_date_column_content( $column, $post_id ) {
if ( 'delivery_date' === $column ) {
$order = wc_get_order( $post_id );
// Используйте правильный ключ метаданных '_delivery_date'
$delivery_date = $order->get_meta( '_delivery_date', true );
if ( $delivery_date ) {
echo esc_html( $delivery_date );
} else {
echo '<small>(<em>No delivery date</em>)</small>';
}
}
}
// Делаем новый столбец сортируемым
add_filter( 'manage_edit-shop_order_sortable_columns', 'make_delivery_date_column_sortable' );
function make_delivery_date_column_sortable( $columns ) {
$columns['delivery_date'] = 'delivery_date';
return $columns;
}
// Поддержка сортировки в запросе
add_action( 'pre_get_posts', 'delivery_date_column_orderby' );
function delivery_date_column_orderby( $query ) {
if ( ! is_admin() ) {
return;
}
error_log(print_r($query, true));
$orderby = $query->get( 'orderby' );
if ( 'delivery_date' === $orderby ) {
$query->set( 'meta_key', '_delivery_date' );
$query->set( 'orderby', 'meta_value' );
}
}
Я использую данный код чтоб добавить в страницу заказов столбец "Дата доставки" ниже пытаюсь сделать функцию, чтоб можно было сортировать по этому полю ASC и DESC однако данный столбец не становится кликабельным и не сортируется