You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

WordPress如何修改_get_last_post_time函数的输出日期格式

解决方法

_get_last_post_time() 是WordPress核心内部函数,本身不支持直接传入参数自定义日期格式,默认返回Y-m-d H:i:s格式的时间字符串,可通过以下两种方案实现自定义格式输出:

方案1:拿到返回值后二次格式化(最稳妥,无需修改核心逻辑)

如果仅单次修改格式,直接对原函数返回的结果做转换即可:

  • 若需要本地化输出中文格式时间,推荐用WordPress自带的date_i18n()函数:
// 调用原函数获取默认格式的时间
$original_time = _get_last_post_time( $timezone, array('date','modified'), $post_type );
// 自定义格式,可按需替换,比如改成"Y年m月d日"、"m/d/Y"等
$custom_format = 'Y年m月d日 H:i';
// 转换为自定义格式
$formatted_time = date_i18n( $custom_format, strtotime( $original_time ) );

// 输出使用
echo $formatted_time;
  • 更高效的写法:直接调用函数时指定返回时间戳,省去strtotime转换步骤
// 传入$timezone参数为'timestamp',直接获取时间戳
$time_stamp = _get_last_post_time( 'timestamp', array('date','modified'), $post_type );
// 直接格式化时间戳即可
$formatted_time = date_i18n( 'Y年m月d日', $time_stamp );

方案2:封装自定义函数统一全局格式

如果多处调用需要统一格式,建议封装自定义函数,避免重复写转换逻辑:

/**
 * 自定义获取最新文章时间,支持传入格式
 * 参数和原函数保持一致,新增$format参数指定输出格式
 */
function custom_get_last_post_time( $timezone, $types, $post_type, $format = 'Y-m-d H:i:s' ) {
    $original_time = _get_last_post_time( $timezone, $types, $post_type );
    if ( empty( $original_time ) ) {
        return '';
    }
    // 如果已经是时间戳,直接转格式
    $timestamp = is_numeric( $original_time ) ? $original_time : strtotime( $original_time );
    return date_i18n( $format, $timestamp );
}

// 调用示例
echo custom_get_last_post_time( $timezone, array('date','modified'), $post_type, 'm/d/Y' );

注意事项

  • _get_last_post_time 是WordPress标记为内部使用的私有函数(前缀为下划线),官方不推荐主题、插件等对外发布的产品直接调用,避免后续核心版本更新后函数被删除或修改逻辑导致功能失效。如果是公开产品使用,建议参考核心源码自己实现独立的调用方法。
  • 不要直接修改WordPress核心文件的_get_last_post_time函数逻辑,后续版本更新会覆盖你的修改,导致功能失效。

内容的提问来源于stack exchange,提问作者Demian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:18:03