我正在尝试自定义预订体验。我的产品是全年的旅行,滚动日历以找到可用的日子效率不高。我想要的是一个下拉列表,其中包含该巡视的下一个可用日期。我的情况有插件或解决方案吗?
答案 0 :(得分:0)
您好该文件位于wp-content / plugins / woocommerce-bookings / templates / booking-form
所描述的帖子中的代码大部分都有用,但有一些错误
警告:reset()期望参数1为数组,字符串在第54行的/home/betaacademyofflo/public_html/wp-content/plugins/woocommerce-bookings/templates/booking-form/date-picker.php中给出< / p>
警告:传递给each()的变量不是第55行/home/betaacademyofflo/public_html/wp-content/plugins/woocommerce-bookings/templates/booking-form/date-picker.php中的数组或对象< / p>
每个可用日期都会显示此错误。
我想做的一个调整是,目前选择列表显示我需要的每个日期的重复项,只显示一次日期。
每个日期一旦我的意思是开始日期,我的预订都有相同的开始和结束日期。
你可以在这里看到一个例子example list我现在已经预测了这些错误。 到目前为止,代码中的代码与wordress支持的OP版本几乎相同。
<?php
$year = array();
$month = array();
$days = array();
$s;
$day1;
$i=0;
$j=0;
foreach ($availability_rules as $value) {
foreach ( $value as $value2) {
foreach ( $value2 as $value3) {
reset($value3);
while (list($key, $val) = each($value3)) {
$year[$i] = $key; //add year to array - $i is the count of how many course
reset($val);
while (list($key2, $val2) = each($val)) {
if($key2 < 10){
$month[$i] = '0'.$key2; //add the month value to another array - with leading 0
}else{
$month[$i] = $key2; //add the month value to another array
}
$s = "";
$j = 0;
reset($val2);
while (list($key3, $val3) = each($val2)) {
if($j==0||$j==1){
$s = $s . $key3 .',';
}else{
$s = $s . $key3;
}
if($j==0){
$day1[$i] = $key3; //add the day value to another array
}
$j++;
}
$days[$i] = $s;
}
$i++; //increments each time we loop through a year
}
}
}
}
$arrlength = 0;
$arrlength = count($year); //this is our total amount of courses
?>
<fieldset class="wc-bookings-date-picker <?php echo implode( ' ', $class ); ?>">
<legend><?php echo $label; ?>: </small></legend>
<select id="availableDates">
<option value="">Select Date</option>
<?php
if($arrlength==0){
echo "<option value=''>There are no dates</option>";
}else{
$todays_date = date("d-m-Y");
$today = strtotime($todays_date);
for($total_dates = $arrlength -1; $total_dates >= 0; $total_dates--){ //loop through total amount
$expiration_date =strtotime($day1[$total_dates].'-'.$month[$total_dates].'-'.$year[$total_dates]);
$actualdates = $day1[$total_dates]-$month[$total_dates]-$year[$total_dates];
$displaydates = $day1[$total_dates]/$month[$total_dates]/$year[$total_dates];
//$input = array( $day1[$total_dates]-$month[$total_dates]-$year[$total_dates]);
//$result = array_keys($input);
if ($expiration_date > $today) {
echo "<option value='$day1[$total_dates]-$month[$total_dates]-$year[$total_dates]'>$day1[$total_dates]/$month[$total_dates]/$year[$total_dates]</option>"; //pull in the index for each date array
}
}
}
?>
我尝试了什么;
在最终结果上运行额外的foreach不起作用 尝试过array_unique无法正常工作
这里的Anny指导会得到最多的肯定。