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 关注
- 178 浏览
添加回答
举报