WooCommerce 3.0+ 更改管理员订单日期列格式



在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/d g: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( __( 'Y-m-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/d g: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()的源代码,它正在使用新的WC_Data getter方法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);
}

从 https://wordpress.org/support/topic/show-time-on-order-backend-broken-since-woo-3/在WooCommerce版本6.7.0下工作

add_filter('woocommerce_admin_order_date_format', 'custom_post_date_column_time');
function custom_post_date_column_time($format)
{
    return __('Y-m-d h:i', 'woocommerce');   
}

相关内容

  • 没有找到相关文章

最新更新