如何用PHP函数在WordPress中格式化Events Manager Pro注册开始时间
修改Events Manager Pro自定义占位符的日期时间格式
你可以通过修改子主题functions.php中的代码,利用PHP的DateTime类转换日期时间格式,实现Monday January 9 at 10h00的展示样式。以下是修改后的完整代码:
function my_em_registrationstartdatetime_placeholder($replace, $EM_Event, $result){ if ( $result == '#_REGISTRATIONSTARTDATETIME' ) { $ticket_list = ""; foreach( $EM_Event->get_tickets()->tickets as $EM_Ticket ){ // 获取插件返回的原始日期时间字符串 $original_datetime = $EM_Ticket->get_datetime('start'); // 按原始格式解析为DateTime对象 $datetime = DateTime::createFromFormat('Y-m-d H:i:s', $original_datetime); if ($datetime) { // 格式化为目标样式 $formatted_datetime = $datetime->format('l F j \a\t H\hi'); $ticket_list .= $formatted_datetime; // 若有多个票种,可添加分隔符(比如换行) // $ticket_list .= '<br>'; } } $replace = $ticket_list; } return $replace; } add_filter('em_event_output_placeholder','my_em_registrationstartdatetime_placeholder',1,3);
关键修改说明:
- 解析原始时间:用
DateTime::createFromFormat方法,按照插件返回的Y-m-d H:i:s格式把字符串转换成可操作的DateTime对象,确保解析准确。 - 自定义格式字符串:
format方法中的参数对应你需要的样式:l:输出星期全称(如Monday)F:输出月份全称(如January)j:输出不带前导零的日期(如9)\a\t:转义输出固定文本at(因为a和t是DateTime的内置格式符,需要反斜杠转义)H:输出24小时制的小时数(如10)\h:转义输出固定字母hi:输出两位分钟数(如00)
- 容错处理:添加
if ($datetime)判断,避免原始时间格式异常时出现错误输出。
内容的提问来源于stack exchange,提问作者EricVallieres
相关产品推荐
相关产品推荐

