3 回答

TA貢獻1829條經驗 獲得超13個贊
JSON必須是事件數組(即使該數組僅包含一個對象)。當前,您只有一個對象,fullCalendar不會讀取該對象。
使您的calendar.json文件如下所示:
[
{
"title" : "something",
"start" : "2019-04-23"
}
]
您還需要稍稍更改代碼,以便將您的PHP$url變量視為PHP并進行渲染,并且這樣輸出也將由JS視為字符串,而不僅僅是按原樣注入JS:
events: "<?php echo $url; ?>"

TA貢獻1895條經驗 獲得超3個贊
如果您的php和fullcalendar在同一頁面上,則可能需要此頁面
<?php
$url = get_stylesheet_directory_uri() . '/calendar.json';
?>
<html>
<head>
<meta charset='utf-8' />
<script>
document.addEventListener('DOMContentLoaded', function() {
var calendarEl = document.getElementById('calendar');
var calendar = new FullCalendar.Calendar(calendarEl, {
plugins: [ 'dayGrid' ],
events: "<?php echo $url; ?>";
});
calendar.render();
});
</script>
</head>
<body>
<div id='calendar'></div>
</body>
</html>
記住檢查一下calendar.json的輸出。它看起來應該像這樣
[
{
"title" : "something",
"start" : "2019-04-23"
}
];

TA貢獻1810條經驗 獲得超4個贊
我不確定,是否可以解決您的問題,我也不了解WordPress。但是,也許您可以嘗試使用WordPress內置函數,在這種情況下,您可以嘗試wp_remote_get或找到類似的函數來代替file_get_content()。因為可能出于安全性或權限方面的原因,您不確定不能從某些URL獲取內容。
您可以對其進行測試,chmod($url, 0000);以查看是否允許您更改文件的權限。然后,如果是權限問題,則可以將其添加chmod()到腳本中:
//Wordpress function for URL to the file location
$url = get_stylesheet_directory_uri() . '/calendar.json';
chmod($url, 0777);
//$data = file_get_contents($url);
$data = wp_remote_get($url);
$content = json_decode($data);
chmod($url, 0755);
echo $content->title;
echo $content->start;
您的PHP代碼似乎很好。也許,var_dump($url);以確保一切都很好。
另外,您可以嘗試更改
events: $url;
至
events: <?php echo $url; ?>
- 3 回答
- 0 關注
- 190 瀏覽
添加回答
舉報