我想将这个正在工作的简单WordPress插件的一部分写到页脚,并且我需要能够使用内联脚本,以便可以在一些从中获取日期的函数中调用PHP。我网站的后端。
该插件可以正常工作,但是由于循环会获取每个日期,因此脚本会一遍又一遍地重复,从而导致无论其中有多少日期,页脚脚本都像这样:
等...
我曾尝试将循环内的JS放在其外部并使用函数进行调用,但它仍然不起作用(由于循环内需要使用vars),并且它仍显示脚本标记的负载在页脚中仅包含一个函数调用。无论如何,这是我的代码,希望有人有一些想法!
function init_cal(){?>
<脚本>
//为每种类型的日期创建列表
var yearList = [];
var monthList = [];
var dateList = []
<?php
if(have_rows('book','option')):
while(have_rows('book','option')):the_row();
//从acf获取日期的子字段值
$ bookStart = get_sub_field('cal_date_start',false);
$ bookEnd = get_sub_field('cal_date_end',false); ?>
<脚本>
//查找两个输入日期之间的天数
var getDates = function(startDate,endDate){
变量日期= [],
currentDate = startDate,
addDays = function(days){
var date = new Date(this.valueOf());
date.setDate(date.getDate()+天);
归期;
};
while(currentDate <= endDate){
dates.push(currentDate);
currentDate = addDays.call(currentDate,1);
}
返回日期;
};
//获取日期,缩短日期,并在上面输入内容
var date = getDates(
//目标开始日期
新日期(
<?php echo substr($ bookStart,0,-4)?>,
<?php echo substr($ bookStart,4,-2)?>,
<?php echo substr($ bookStart,6)?>),
//目标结束日期
新日期(
<?php echo substr($ bookEnd,0,-4)?>,
<?php echo substr($ bookEnd,4,-2)?>,
<?php echo substr($ bookEnd,6)?>)
);
//获取输出的日期并将其附加到列表中
date.forEach(function(date){
var month = date.getMonth();
//由于某些原因,第12个月显示为0,因此将其设置回12
如果(月== 0){
月= 12;
}
monthList.push(month);
var theDate = date.getDate();
dateList.push(theDate);
var year = date.getFullYear();
//第12个月中的天数过早地添加了一年,因此将其重新设置
如果(月== 12){
年=年-1;
}
yearList.push(year);
});
<?php结束;
万一;
}
?>
非常感谢您的帮助,如果格式设置不正确,很抱歉,我以前没有在此网站上发布过。
答案 0 :(得分:0)
好吧,您实际上并不能做很多,但是您可以在循环之前打开script标签,然后再关闭它,而在循环中仅打印js部分,因此您将只有一个script标签。 / p>