WP Full Calendar修改事件链接至#_BOOKINGSLINK占位符求助
解决WP Full Calendar事件链接替换为预订链接的问题
嘿,完全可以实现这个需求!你已经找对了修改的入口,接下来只需要调整代码逻辑,把事件链接替换成Event Manager的预订链接就行,我给你写好完整代码并拆解说明:
首先,你提到的my_fc_filter是WP Full Calendar提供的fullcalendar_events过滤钩子,用来修改日历事件的各项属性。#_BOOKINGSLINK是Event Manager的前端占位符,在PHP代码里我们需要调用插件的API直接获取对应链接,不能直接用占位符字符串。
下面是修改后的完整代码:
function my_fc_filter( $events ) { // 循环遍历每个日历事件 foreach ( $events as &$event ) { // 确保当前事件关联了Event Manager的事件数据 if ( isset( $event['post_id'] ) ) { // 通过帖子ID获取Event Manager的事件实例 $em_event = em_get_event( $event['post_id'], 'post_id' ); // 验证事件实例是否有效 if ( $em_event instanceof EM_Event ) { // 替换事件URL为预订链接(对应#_BOOKINGSLINK的实际地址) $event['url'] = $em_event->get_booking_url(); } } } return $events; } add_filter( 'fullcalendar_events', 'my_fc_filter' );
代码细节说明:
- 用
&$event引用遍历,确保能直接修改原数组里的事件数据 em_get_event()是Event Manager的核心函数,通过WordPress帖子ID获取对应的事件对象$em_event->get_booking_url()会直接返回该事件的预订页面地址,和#_BOOKINGSLINK占位符指向的地址完全一致- 如果你的需求是跳转到后台管理页面而非前端预订页,可以把
get_booking_url()换成get_edit_link(),这个方法会返回事件的后台编辑链接
使用步骤:
- 打开你的WordPress主题文件夹,找到
functions.php文件 - 将上面的代码复制粘贴到文件末尾(注意不要破坏原有代码结构)
- 保存文件后刷新日历页面,点击事件就能跳转到你想要的链接啦
内容的提问来源于stack exchange,提问作者jrowecc
相关产品推荐
相关产品推荐

