{"id":1047,"date":"2026-02-28T15:20:48","date_gmt":"2026-02-28T07:20:48","guid":{"rendered":"https:\/\/tomstudio.my.to\/?page_id=1047"},"modified":"2026-02-28T16:32:05","modified_gmt":"2026-02-28T08:32:05","slug":"cal-115-1","status":"publish","type":"page","link":"https:\/\/tomstudio.my.to\/?page_id=1047","title":{"rendered":"cal-115-1"},"content":{"rendered":"\t<link href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.8\/dist\/css\/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-sRIl4kxILFvY47J16cr9ZwB07vP4J8+LH7qKQnuqkuIAvNWLzeN8tE5YBujZqJLB\" crossorigin=\"anonymous\">\n\t<link rel=\"stylesheet\" href=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap-icons@1.13.1\/font\/bootstrap-icons.min.css\">\n\t<!-- Quill 2.0 CSS (Snow \u4e3b\u984c) -->\n    <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/quill@2.0.3\/dist\/quill.snow.css\" rel=\"stylesheet\">\n\t\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/fullcalendar@7.1.3\/all\/global.js\"><\/script>\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/fullcalendar@7.1.3\/themes\/forma\/global.js\"><\/script>\n\n<link href='https:\/\/cdn.jsdelivr.net\/npm\/fullcalendar@7.1.3\/skeleton.css' rel='stylesheet' \/>\n<link href='https:\/\/cdn.jsdelivr.net\/npm\/fullcalendar@7.1.3\/themes\/forma\/theme.css' rel='stylesheet' \/>\n<link href='https:\/\/cdn.jsdelivr.net\/npm\/fullcalendar@7.1.3\/themes\/forma\/palettes\/purple.css' rel='stylesheet' \/>\n\t\n\t<style>\n\n\t\/* \u8a2d\u5b9a\u9031\u672b\u7684\u5e95\u8272 *\/\n\t.my-weekend-sat,\n\t.my-weekend-sun {\n\t\tbackground-color: #f0f4f9 !important; \/* Forma \u4e3b\u984c\u98a8\u683c\u7684\u6de1\u85cd\u7070 *\/\n\t}\n\n\t.fc .fc-multimonth-title {\n\t\tpadding: 0.5em 0px;\n\t}\n\n\t#calendar-menu div:hover { \n\t\tbackground-color: #f8f9fa;\n\t}\n\n\ta {\n\t\ttext-decoration: none;\n\t}\n\n\t.fc .fc-daygrid-body-balanced .fc-daygrid-day-events {\n\t\tposition: relative;\n\t}\n\n\t.fc-h-event {\n\t\tborder: 0px solid var(--fc-event-border-color) !important;\n\t}\n\t\n\t.fc-h-event .fc-event-title-container {\n\t\tcursor: pointer;\n\t}\n\t\n\ta.fc-event, a.fc-event:hover {\n\t\tcursor: pointer;\n\t}\n\t\n\ttable{\n\t\tmargin: 0;\n\t}\n\n\t.entry-content h1, .entry-content h2, .entry-content h3, .entry-content h4, .entry-content h5, .entry-content h6 {\n\t\tmargin-bottom: 0;\n\t}\n\t\n\t.entry-content[ast-blocks-layout] > * {\n\t\tmax-width: none !important;\n\t}\n\t\n\t.ql-editor {\n\t\tbackground-color: #f8f9fa; \/* \u6dfa\u7070\u8272\u5e95\uff08Bootstrap \u5e38\u7528\u8f15\u5e95\u8272\uff09 *\/\n\t\tborder: 1px solid #ced4da; \/* \u6bd4\u6dfa\u7070\u5e95\u518d\u6df1\u4e00\u9ede\u7684\u7dda\u908a\u6846 *\/\n\t\tborder-radius: 5px;        \/* 5px \u7684\u5713\u89d2 *\/\n\t}\n\t<\/style>\n\n\n<div class=\"modal fade\" id=\"FrontEventModal\" tabindex=\"-1\" aria-labelledby=\"FrontEventModalLabel\" aria-hidden=\"true\">\n  <div class=\"modal-dialog modal-dialog-centered modal-lg\">\n    <div class=\"modal-content\">\n      <div class=\"modal-header\">\n        <h4 class=\"modal-title\" id=\"FrontEventModalLabel\">\u6d3b\u52d5\u5167\u5bb9<\/h4>\n        <button type=\"button\" class=\"btn-close\" data-bs-dismiss=\"modal\" aria-label=\"Close\"><\/button>\n      <\/div>\n      <div class=\"modal-body\">\n\t\t<div class=\"mb-1\">\n\t\t\t<h4>\u6d3b\u52d5\uff1a<span id=\"FrontEventTitle\" class=\"fw-bold\"><\/span><\/h4>\n\t\t<\/div>\n        <div class=\"mb-1\">\n\t\t\t<h4>\u6642\u9593\uff1a<span id=\"FrontEventTime\"><\/span><\/h4>          \n        <\/div>\n        <div class=\"mb-1\">\n\t\t\t<h4 class=\"mb-2\">\u5167\u5bb9\uff1a<\/h4>\n\t\t\t<div id=\"FrontEventContent\" class=\"ql-editor\"><\/div>\n        <\/div>\n      <\/div>\n      <div class=\"modal-footer\">\n        <button type=\"button\" class=\"btn btn-secondary\" data-bs-dismiss=\"modal\">\u95dc\u9589<\/button>\n      <\/div>\n    <\/div>\n  <\/div>\n<\/div>\n\n\n    <div id=\"calendar2\"><\/div>\n<!-- jQuery -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/jquery@3.7.1\/dist\/jquery.min.js\"><\/script>\n<!-- Bootstrap -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/bootstrap@5.3.8\/dist\/js\/bootstrap.bundle.min.js\" integrity=\"sha384-FKyoEForCGlyvwx9Hj09JcYn3nv7wiPVlz7YYwJrWVcXK\/BmnVDxM+D2scQbITxI\" crossorigin=\"anonymous\"><\/script>\n\n<!-- jQuery UI -->\n<script src=\"https:\/\/cdn.jsdelivr.net\/npm\/jquery-ui@1.14.2\/dist\/jquery-ui.min.js\"><\/script>\n<!-- Moment.js -->\n<script\n  src=\"https:\/\/cdn.jsdelivr.net\/npm\/moment@2.31.0\/min\/moment.min.js\"\n  integrity=\"sha512-iJIt5wigccZYA4F3G8kWt8H0r43JDWpvBweaGct6QsveuU4zmyP6VX2EXMfSfA\/Z80b1PfHUNLioFfY1Z55cCg==\"\n  crossorigin=\"anonymous\"\n><\/script>\n\n<script>\n$(function () {\n\t\n\n    var calendarEl = document.getElementById('calendar2');\n\n\tlet activeEvent = null; \/\/ \u7528\u4f86\u5132\u5b58\u7576\u524d\u9ede\u9078\u7684\u4e8b\u4ef6\u7269\u4ef6\n\tconst menu = document.getElementById('calendar-menu');\n\t\n    var calendar = new FullCalendar.Calendar(calendarEl, {\n\t\tlocale: 'zh-tw',\n\t\theaderToolbar: {\n\t\tleft  : 'prev,next today',\n\t\tcenter: 'title',\n\t\tright : 'multiMonthYear,dayGridMonth,timeGridWeek,listMonth,CustomTable'\n\t\t},\n\t\tinitialView: 'dayGridMonth',\n\t\theight: 'auto',\n\t\tcontentHeight: 'auto',\n\t\tdayMaxEvents: false,\n\t\tdayMaxEventRows: false,\n\t\t\/\/weekNumbers: true,\n\t\teditable  : false,\n\t\tviews: {\n\t\t\tCustomTable: {\n\t\t\t\tduration: { months: 1 },\n\t\t\t\tcontent: function(props) {\n\t\t\t\t\t\/\/ \ud83d\udca1 1. \u53d6\u5f97\u7576\u524d\u5207\u63db\u5230\u7684\u6642\u9593\u5340\u9593 (\u7531 prev, next, today \u63a7\u5236)\n\t\t\t\t\tlet activeStart = props.dateProfile.activeRange.start;\n\t\t\t\t\tlet activeEnd = props.dateProfile.activeRange.end;\n\n\t\t\t\t\t\/\/ \ud83d\udca1 2. \u512a\u5148\u5f9e props \u5167\u5efa\u7684\u5b98\u65b9 API \u6488\u53d6\uff0c\u82e5\u627e\u4e0d\u5230\u5247\u76f4\u63a5\u4f7f\u7528\u60a8\u521d\u59cb\u5316\u6642\u5ba3\u544a\u7684 calendar \u8b8a\u6578\n\t\t\t\t\tlet calendarApi = null;\n\t\t\t\t\tif (props.context && props.context.calendarApi) {\n\t\t\t\t\t\tcalendarApi = props.context.calendarApi;\n\t\t\t\t\t} else if (typeof calendar !== 'undefined') {\n\t\t\t\t\t\tcalendarApi = calendar; \/\/ \ud83d\udca1 \u76f4\u63a5\u4f7f\u7528\u60a8\u539f\u672c\u5ba3\u544a\u7684\u5e38\u6578\/\u8b8a\u6578\n\t\t\t\t\t}\n\n\t\t\t\t\tlet allEvents = [];\n\t\t\t\t\tif (calendarApi && typeof calendarApi.getEvents === 'function') {\n\t\t\t\t\t\tallEvents = calendarApi.getEvents(); \/\/ \u5b89\u5168\u53d6\u5f97\u6240\u6709\u4e8b\u4ef6\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconsole.error(\"\u7121\u6cd5\u6210\u529f\u53d6\u5f97 FullCalendar \u5be6\u4f8b\u3002\");\n\t\t\t\t\t}\n\n\t\t\t\t\tlet expandedEvents = [];\n\t\t\t\t\t\n\t\t\t\t\t\/\/ \u62c6\u89e3\u8de8\u5929\u4e8b\u4ef6 (\u4e0d\u5305\u542b\u6700\u5f8c\u4e00\u5929)\n\t\t\t\t\tallEvents.forEach(function(event) {\n\t\t\t\t\t\tlet start = event.start ? new Date(event.start) : null;\n\t\t\t\t\t\tlet end = event.end ? new Date(event.end) : null;\n\t\t\t\t\t\tlet eventColor = event.backgroundColor || event.borderColor || '#000';\n\t\t\t\t\t\tif (start) {\n\t\t\t\t\t\t\tlet current = new Date(start);\n\t\t\t\t\t\t\tif (end) {\n\t\t\t\t\t\t\t\twhile (current < end) {\n\t\t\t\t\t\t\t\t\t\/\/ \ud83d\udca1 3. \u6aa2\u67e5\u62c6\u89e3\u5f8c\u7684\u6bcf\u4e00\u5929\u662f\u5426\u5728 headerToolbar \u76ee\u524d\u7684\u5340\u9593\u5167\n\t\t\t\t\t\t\t\t\tif (current >= activeStart && current < activeEnd) {\n\t\t\t\t\t\t\t\t\t\texpandedEvents.push({ \n\t\t\t\t\t\t\t\t\t\t\ttitle: event.title || '\u7121\u6a19\u984c', \n\t\t\t\t\t\t\t\t\t\t\tcontent: event.extendedProps.content || '', \n\t\t\t\t\t\t\t\t\t\t\tdate: new Date(current),\n\t\t\t\t\t\t\t\t\t\t\tcolor: eventColor \n\t\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\tcurrent.setDate(current.getDate() + 1);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\/\/ \u55ae\u5929\u4e8b\u4ef6\u5224\u65b7\n\t\t\t\t\t\t\t\tif (current >= activeStart && current < activeEnd) {\n\t\t\t\t\t\t\t\t\texpandedEvents.push({ \n\t\t\t\t\t\t\t\t\t\ttitle: event.title || '\u7121\u6a19\u984c', \n\t\t\t\t\t\t\t\t\t\tcontent: event.extendedProps.content || '',\n\t\t\t\t\t\t\t\t\t\tdate: new Date(current),\n\t\t\t\t\t\t\t\t\t\tcolor: eventColor \n\t\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\t\/\/ \u4f9d\u7167\u65e5\u671f\u6392\u5e8f (\u820a -> \u65b0)\n\t\t\t\t\texpandedEvents.sort((a, b) => a.date.getTime() - b.date.getTime());\n\n\t\t\t\t\t\/\/ \u5efa\u7acb HTML \u8868\u683c\u7d50\u69cb\n\t\t\t\t\tlet $table = $(`\n\t\t\t\t\t\t<table class=\"table table-hover mb-0\">\n\t\t\t\t\t\t\t<thead class=\"table-light\">\n\t\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t\t<th style=\"width: 250px;\">\u65e5\u671f<\/th>\n\t\t\t\t\t\t\t\t\t<th>\u4e8b\u4ef6<\/th>\n\t\t\t\t\t\t\t\t\t<th>\u5167\u5bb9<\/th>\n\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t<\/thead>\n\t\t\t\t\t\t\t<tbody class=\"table-group-divider\"><\/tbody>\n\t\t\t\t\t\t<\/table>\n\t\t\t\t\t`);\n\t\t\t\t\tlet $tbody = $table.find('tbody');\n\n\t\t\t\t\tif (expandedEvents.length > 0) {\n\t\t\t\t\t\tlet lastDateStr = \"\"; \n\n\t\t\t\t\t\texpandedEvents.forEach(function(item) {\n\t\t\t\t\t\t\tlet dateStr = item.date.toLocaleDateString('zh-TW', { year: 'numeric', month: 'long', day: 'numeric' });\n\t\t\t\t\t\t\tlet weekStr = item.date.toLocaleDateString('zh-TW', { weekday: 'long' }).replace('\u661f\u671f', '');\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlet isNewDay = (dateStr !== lastDateStr);\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlet rowStyle = (isNewDay && lastDateStr !== \"\") \n\t\t\t\t\t\t\t\t? 'style=\"border-top: 2px solid #ccc;\"' \n\t\t\t\t\t\t\t\t: 'style=\"border-top: 0px solid #fff;\"';\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tlastDateStr = dateStr;\n\n\t\t\t\t\t\t\t$tbody.append(`\n\t\t\t\t\t\t\t\t<tr ${rowStyle}>\n\t\t\t\t\t\t\t\t\t<td class=\"fw-bold\">\n\t\t\t\t\t\t\t\t\t\t${dateStr} (${weekStr})\n\t\t\t\t\t\t\t\t\t<\/td>\n\t\t\t\t\t\t\t\t\t<td class=\"fw-bold\" style=\"color: ${item.color};\">${item.title}<\/td>\n\t\t\t\t\t\t\t\t\t<td class=\"fw-bold\" style=\"color: ${item.color};\">${item.content}<\/td>\n\t\t\t\t\t\t\t\t<\/tr>\n\t\t\t\t\t\t\t`);\n\t\t\t\t\t\t});\n\t\t\t\t\t} else {\n\t\t\t\t\t\t$tbody.append('<tr><td colspan=\"2\" class=\"text-center p-4\">\u7576\u524d\u671f\u9593\u5167\u67e5\u7121\u4e8b\u4ef6\u8cc7\u6599<\/td><\/tr>');\n\t\t\t\t\t}\n\t\t\t\t\t\n\t\t\t\t\treturn { domNodes: $table.get() };\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tdatesSet: function(info) {\n\t\t\tif (info.view.type !== 'timeGridWeek') {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t\t\/\/ \u6293\u53d6\u6240\u6709\u5305\u542b Forma \u7279\u5fb5 class \u4e14\u5e36\u6709 data-date \u7684\u76f4\u6b04\n\t\t\tvar timeCols = document.querySelectorAll('[data-date].fc-forma-wsy, [data-date].fc-forma-tfB, .fc-timegrid-col[data-date]');\n\t\t\t\n\t\t\ttimeCols.forEach(function(col) {\n\t\t\t\tvar dateStr = col.getAttribute('data-date');\n\t\t\t\tif (!dateStr) return;\n\n\t\t\t\t\/\/ \u52a0\u4e0a T00:00:00 \u78ba\u4fdd\u65e5\u671f\u89e3\u6790\u4e0d\u6703\u6709\u6642\u5340\u8aa4\u5dee\n\t\t\t\tvar date = new Date(dateStr + 'T00:00:00');\n\t\t\t\tvar day = date.getDay(); \/\/ 0 \u662f\u9031\u65e5, 6 \u662f\u9031\u516d\n\n\t\t\t\tif (day === 6 || day === 0) {\n\t\t\t\t\t\/\/ 1. \u9031\u516d\u3001\u9031\u65e5\uff1a\u5857\u4e0a\u6dfa\u85cd\u8272\n\t\t\t\t\tcol.style.setProperty('background-color', 'rgb(240 248 255 \/ 50%)', 'important');\n\t\t\t\t\t\n\t\t\t\t\t\/\/ \u5c07 Forma \u76f4\u6b04\u5167\u90e8\u7684\u6240\u6709\u5b50\u7bc0\u9ede\u80cc\u666f\u8a2d\u70ba\u900f\u660e\uff0c\u8b93\u85cd\u8272\u900f\u51fa\u4f86\n\t\t\t\t\tcol.querySelectorAll('*').forEach(function(child) {\n\t\t\t\t\t\t\/\/child.style.setProperty('background-color', 'transparent', 'important');\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\t\/\/ 2. \ud83d\udca1\u3010\u95dc\u9375\u4fee\u6b63\u3011\u5e73\u5e38\u65e5\uff08\u9031\u4e00\u81f3\u9031\u4e94\uff09\uff1a\u5f37\u5236\u6e05\u9664\u5148\u524d\u7559\u4e0b\u7684\u80cc\u666f\u8272\n\t\t\t\t\t\/*col.style.removeProperty('background-color');\n\t\t\t\t\t\n\t\t\t\t\tcol.querySelectorAll('*').forEach(function(child) {\n\t\t\t\t\t\tchild.style.removeProperty('background-color');\n\t\t\t\t\t});*\/\n\t\t\t\t}\n\t\t\t});\n\t\t},\n\t\tdayCellClass: function(state) {\n\t\t\t\/\/ state.date \u53ef\u4ee5\u53d6\u5f97\u76ee\u524d\u7684 Date \u7269\u4ef6\n\t\t\tconst day = state.date.getDay(); \n\t\t\tif (day === 6) {\n\t\t\t\treturn 'my-weekend-sat'; \/\/ \u9031\u516d\u7684\u81ea\u8a02 CSS \u985e\u540d\n\t\t\t}\n\t\t\tif (day === 0) {\n\t\t\t\treturn 'my-weekend-sun'; \/\/ \u9031\u65e5\u7684\u81ea\u8a02 CSS \u985e\u540d\n\t\t\t}\n\t\t\treturn '';\n\t\t},\n\t\tbuttons: {\n\t\t\ttoday:{\n\t\t\t\ttext: '\u4eca\u5929',\n\t\t\t},\n\t\t\tmultiMonthYear: {\n\t\t\t\ttext: '\u5e74',\n\t\t\t},\n\t\t\tdayGridMonth: {\n\t\t\t\ttext: '\u6708',\n\t\t\t},\n\t\t\ttimeGridWeek: {\n\t\t\t\ttext: '\u9031',\n\t\t\t},\n\t\t\tlistMonth: {\n\t\t\t\ttext: '\u6708\u5217\u8868',\n\t\t\t},\n\t\t\tCustomTable: {\n\t\t\t\ttext: '\u8868\u683c',\n\t\t\t},\n\t\t},\n\t\t\/\/Random default events\n\t\tevents: {\n\t\t\turl: '\/wp-admin\/admin-ajax.php', \/\/ WordPress AJAX \u5165\u53e3\n            method: 'POST',\n            extraParams: {\n                action: 'fetch_calendar_events', \/\/ \u5c0d\u61c9 PHP \u7684 add_action \u540d\u7a31\n\t\t\t\tcid: 2            },\n            failure: function() {\n                alert('\u8b80\u53d6\u884c\u4e8b\u66c6\u4e8b\u4ef6\u6642\u767c\u751f\u932f\u8aa4\uff01');\n            }\n\t\t\t\n\t\t},\n\t\teventClick: function(info) {\n\t\t\t\/\/console.log(info.event._def.ui.backgroundColor);\n\t\t\t\/\/ 1. \u8a2d\u5b9a Modal \u9802\u90e8\u7684\u6a19\u984c\u6587\u5b57\n\t\t\t\/\/$('#FrontEventModal .modal-title').text(info.event.title);\n\t\t\t$('#FrontEventModal .modal-header').css('background-color',info.event._def.ui.backgroundColor);\n\t\t\t\n\t\t\t\/\/ 2. \u8a2d\u5b9a\u540d\u7a31\u8f38\u5165\u6846\u7684\u503c (input \u6b04\u4f4d\u8981\u7528 .val())\n\t\t\t$('#FrontEventTitle').text(info.event.title);\n\n\n\t\t\t\t\t\t\n\t\t\tconst startMoment = moment(info.event.start);\n\t\t\t\/\/ \u5982\u679c\u662f\u5168\u5929\u4e8b\u4ef6\u4e14\u6709\u7d50\u675f\u6642\u9593\uff0c\u5148\u6e1b 1 \u5929\uff0c\u5426\u5247\u76f4\u63a5\u8f49\u70ba moment \u7269\u4ef6\n\t\t\tconst endMoment = (info.event.allDay && info.event.end) \n\t\t\t\t? moment(info.event.end).subtract(1, 'days') \n\t\t\t\t: (info.event.end ? moment(info.event.end) : null); \/\/ \u82e5\u7121\u7d50\u675f\u6642\u9593\u8a2d\u70ba null\n\n\t\t\t\/\/ \u52d5\u614b\u5224\u65b7\u958b\u59cb\u6642\u9593\u683c\u5f0f\uff1a\u5982\u679c\u662f\u5168\u5929\u4e8b\u4ef6\uff0c\u53ea\u986f\u793a YYYY-MM-DD\n\t\t\tconst startFormat = info.event.allDay ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm';\n\t\t\tconst startTime = startMoment.format(startFormat);\n\n\t\t\t\/\/ 1. \u5148\u6c7a\u5b9a\u7d50\u675f\u6642\u9593\u7684\u986f\u793a\u683c\u5f0f\uff08\u82e5\u70ba\u6574\u5929\u4e8b\u4ef6\u53ea\u986f\u793a\u65e5\u671f\uff0c\u5426\u5247\u986f\u793a\u65e5\u671f\u6642\u5206\uff09\n\t\t\tconst endFormat = info.event.allDay ? 'YYYY-MM-DD' : 'YYYY-MM-DD HH:mm';\n\n\t\t\t\/\/ 2. \u5224\u65b7\u662f\u5426\u300c\u4e0d\u9700\u8981\u300d\u986f\u793a\u7d50\u675f\u6642\u9593\uff08\u6c92\u6709\u7d50\u675f\u6642\u9593\uff0c\u6216\u662f\u55ae\u5929\u7684\u6574\u5929\u4e8b\u4ef6\uff09\n\t\t\tconst isSingleAllDay = info.event.allDay && startMoment.isSame(endMoment, 'day');\n\n\t\t\tif (!endMoment || isSingleAllDay) {\n\t\t\t\t$('#FrontEventTime').text(startTime);\n\t\t\t} else {\n\t\t\t\t$('#FrontEventTime').text(`${startTime} ~ ${endMoment.format(endFormat)}`);\n\t\t\t}\n\n\n\t\t\n\t\t\t\/\/ 3. \u7cbe\u6e96\u5c07\u5167\u5bb9\u585e\u5165 #FrontEventContent\uff0c\u4e0d\u7834\u58de\u5176\u4ed6 HTML \u7d50\u69cb\n\t\t\tif (info.event.extendedProps.content) {\n\t\t\t\t$('#FrontEventContent').html(info.event.extendedProps.content);\n\t\t\t} else {\n\t\t\t\t$('#FrontEventContent').html('<p>\u7121\u8a73\u7d30\u5167\u5bb9<\/p>'); \n\t\t\t}\n\t\t\t\n\t\t\t\/\/ 4. \u986f\u793a Modal\n\t\t\t$('#FrontEventModal').modal('show');\n\t\t}\n    });\n    calendar.render();\n})\n\n<\/script>\n    \n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"default","site-content-layout":"default","ast-global-header-display":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","footnotes":""},"class_list":["post-1047","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tomstudio.my.to\/index.php?rest_route=\/wp\/v2\/pages\/1047","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tomstudio.my.to\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tomstudio.my.to\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tomstudio.my.to\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tomstudio.my.to\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1047"}],"version-history":[{"count":3,"href":"https:\/\/tomstudio.my.to\/index.php?rest_route=\/wp\/v2\/pages\/1047\/revisions"}],"predecessor-version":[{"id":1053,"href":"https:\/\/tomstudio.my.to\/index.php?rest_route=\/wp\/v2\/pages\/1047\/revisions\/1053"}],"wp:attachment":[{"href":"https:\/\/tomstudio.my.to\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1047"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}