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
相关产品推荐
相关产品推荐

