В WooCommerce я использовал следующий код, чтобы изменить форматирование представления заказов администраторов столбца даты заказа:
// Woocommerce show time on order add_filter('post_date_column_time', 'custom_post_date_column_time', 10, 2); function custom_post_date_column_time($h_time, $post) { return get_the_time(__('Y/m/dg:i:s A', 'woocommerce'), $post); }
С WooCommerce 3.0+ он просто перестает работать.
Есть идеи?
благодаря
В коде основного кода WC class-wc-admin-post-types.php
если вы посмотрите на render_shop_order_columns()
, ситуация изменилась с WooCommerce версии 3.0+, так как она использует WC_Abstract_Order
get_date_created()
вместо функции WordPress get_the_time()
.
Вот почему крюк, который вы используете, больше не работает.
Вот выдержка из исходного кода в WooCommerce версии 3.0+:
case 'order_date' : printf( '<time datetime="%s">%s</time>', esc_attr( $the_order->get_date_created()->date( 'c' ) ), esc_html( $the_order->get_date_created()->date_i18n( __( 'Ym-d', 'woocommerce' ) ) ) ); break;
И вот тот же исходный код, извлеченный в WooCommerce версии 2.6.x:
case 'order_date' : if ( '0000-00-00 00:00:00' == $post->post_date ) { $t_time = $h_time = __( 'Unpublished', 'woocommerce' ); } else { $t_time = get_the_time( __( 'Y/m/dg:i:s A', 'woocommerce' ), $post ); $h_time = get_the_time( __( 'Y/m/d', 'woocommerce' ), $post ); } echo '<abbr title="' . esc_attr( $t_time ) . '">' . esc_html( apply_filters( 'post_date_column_time', $h_time, $post ) ) . '</abbr>'; break;
Теперь, если вы посмотрите на исходный код
get_date_created()
он использует новыйget_prop()
методget_prop()
. В исходном кодеget_prop()
вас есть новая возможность подключения фильтра:$value = apply_filters( $this->get_hook_prefix() . $prop, $value, $this );
ПРАВЫЙ ОТВЕТ:
Пожалуйста, посмотрите официальный ответ WooCommerce
Для упрощения ссылок для других новый фильтр должен быть выпущен в WooCommerce 3.0.2.
Патч может быть применен вручную с https://github.com/woocommerce/woocommerce/pull/14253
Он работает с пользовательской функцией, подключенной в woocommerce_admin_order_date_format
новым фильтром:
// Woocommerce show time on order add_filter('woocommerce_admin_order_date_format', 'custom_post_date_column_time'); function custom_post_date_column_time($h_time, $post) { return get_the_time(__('Y/m/d G:i', 'woocommerce'), $post); }