当前位置: 首页 > 知识库问答 >
问题:

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

陈马鲁
2023-03-14

在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以来,它刚刚停止工作。

有什么想法吗?

谢谢

共有2个答案

蒲深
2023-03-14

正确答案是:

请参阅官方的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);
}
尉迟轶
2023-03-14

在WC core codeclass WC admin post types.php中,如果您查看render\u shop\u order\u columns()函数,自WooCommerce 3.0版以来,情况发生了变化,因为它使用了WC\u Abstract\u order获取创建日期()方法,而不是WordPress函数获取时间()

这就是为什么你使用的钩子不再工作了。

以下是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\u date\u created()的源代码,它将使用新的WC\u Datagetter方法get\u prop()。在get_prop()的源代码中,您可以探索这个新的过滤器挂钩:

$value = apply_filters( $this->get_hook_prefix() . $prop, $value, $this );
 类似资料:
  • 问题内容: 我有一个带有大量行的表。一列包含格式为’%m /%d /%Y’的日期,我想将它们全部更改为格式’%Y-%m-%d’ 通常:更新表设置mydate =‘6’ 我猜是行不通的,因为日期总是在变化。在这种情况下,我该怎么办? 问题答案: 如果日期字符串中的字段正确地用零填充,则可以将它们提取为子字符串:

  • 我尝试创建一个具有特定到期日期的订阅。 在下面的函数中,是一个数组,包含有关产品的详细信息。这个数组包含product_id、regular_price等。product_id引用订阅变量product。 是订阅开始日期。这个时间戳可能是几个月前的。 通过示例,我需要创建一个订阅开始2个月前(4月1日)。认购期限为3个月,因此认购期满必须为7月1日。 但现在的问题是,订阅到期时间定在9月27日。(

  • 我是批处理/shell脚本的新手。我有一个CSV文件是这样的: 大约2000张唱片。col由Tab分隔。我想将日期列更改为以下格式:

  • 店铺后台如何管理订单 如图所示 1、功能路径 Niushop商城电脑端后台-订单 2、流程介绍 买家在商城购买商品,系统则会产生订单,而后台可查看所有订单信息,并对订单可备注 1.查看订单,根据筛选条件可查看指定的订单 订单列表,商城内所有的订单商家均可查看,可看订单的状态、详情、买家、交易状态、配送方式、订单类型等信息(如图) 打印订单:勾选商品,批量操作 2.订单状态: 待付款:在商城中买家已

  • 我们正在从具有日期的数据库中检索列表。我们希望以不同的格式显示它。假设2014年11月10日。 这是我的密码 跟踪1: 小径2: 但它会带来错误。有什么方法,我们可以使用,以获得所需的日期格式在Laravel? 正常查询:

  • 问题内容: 我试图改变对象的格式,我试图以这种方式做到这一点: 但这对对象没有任何影响,仍然是旧格式,无法真正理解为什么会这样。 问题答案: 请尝试将两个概念区分开:您的数据和向用户呈现的数据(或用于其他目的的格式设置,例如包含在JSON中)。的保持值7可以表示为(格式化成)7,07,007或7,同时仍保持刚好相同的值而没有任何格式化信息- 外的格式化谎言。同样,a 具有一个时间点,它可以表示为(