Javascript 日历问题

Javascript 日历问题,javascript,php,ajax,Javascript,Php,Ajax,您好,我对wordpress中的日历有问题 日历只标记当前月份中的事件天数,在旧月份中无法显示 完整代码: functions.php add_filter( 'be_events_manager_metabox_override', '__return_true' ); function draw_calendar($month,$year,$link=0){ if(isset($_GET["mes"])) { // Queremos todos los eventos

您好,我对wordpress中的日历有问题

日历只标记当前月份中的事件天数,在旧月份中无法显示

完整代码:

functions.php

add_filter( 'be_events_manager_metabox_override', '__return_true' );

function draw_calendar($month,$year,$link=0){

if(isset($_GET["mes"])) { 
        // Queremos todos los eventos del mes requerido
    $inicio = strtotime($_GET["mes"]."01");
    $fin = strtotime(date("Y-m-t", $inicio));       
} else {
    // Queremos todos los eventos del mes actual
    $inicio = strtotime(date("Ym01"));
    $fin = strtotime(date("Y-m-t", $inicio));       
}
$eventos = getPostsByFechas($inicio, $fin);

// echo "Draw calendar with $year - $month";
/* draw table */
$today = date("j"); 
$tmes = date("n");
$tano = date("Y");

$calendar = '<table class="table">';

/* table headings */
$headings = array('LUN','MAR','MIE','JUE','VIE','SAB','DOM');
$calendar.= '<thead><tr><th scope="row">'.implode('</th>    <th>',$headings).'</th></tr></thead>';

/* days and weeks vars now ... */
$init_day = date('w',$inicio - 60 * 60 * 24); // Dia de la semana que empieza el mes (menos uno.. PHP sucks) // (0,0,0,$month,1,$year)-1);
$days_in_month = date('t',mktime(0,0,0,$month,1,$year));//
$days_in_this_week = 1;
$day_counter = 0;
$dates_array = array();

/* row for week one */
$calendar.= '<tbody><tr class="calendar-row">';

/* print "blank" days until the first of the current week */
for($x = 0; $x < $init_day; $x++):
$calendar.= '<td><span>&nbsp;</span></td>';
$days_in_this_week++;
endfor;

/* keep going with days.... */

// print_r($eventos);

for($list_day = 1; $list_day <= $days_in_month; $list_day++):
$calendar.= '<td>';
  /* add in the day number */
$list_day2 = ( ($list_day<10) ? "0" : "" ) .$list_day  ;
$month2 = ( ($month<10) ? "0" : "" ) .$month  ;

$dayTieneEvento = hasEventInDay($year.$month2.$list_day2, $eventos);

if($dayTieneEvento){

         //if($dayTieneEvento){

            if($link==0){ 
                $calendar.="<a href=\"javascript:showEvents('$year$month2$list_day2');\" class='tieneeventos'>";
            } else {
                $calendar.="<a href=\"javascript:void(0);\" class='tieneeventos'>";
            }

        } else {
            $calendar.="<a href=\"javascript:void(0);\" class=''>";
        }

    $calendar.= $list_day;
        $calendar.="</a>";

$calendar.= '</td>';

if($init_day == 6):
  $calendar.= '</tr>';
  if(($day_counter+1) != $days_in_month):
    $calendar.= '<tr>';
  endif;
  $init_day = -1;
  $days_in_this_week = 0;
endif;
$days_in_this_week++; $init_day++; $day_counter++;
endfor;

/* finish the rest of the days in the week */
if($days_in_this_week < 8):
for($x = 1; $x <= (8 - $days_in_this_week); $x++):
$calendar.= '<td><span>&nbsp;</span></td>';
endfor;
endif;

/* final row */
$calendar.= '</tr></tbody>';

/* end the table */
$calendar.= '</table>';

/* all done, return result */
return $calendar;
}

function hasEventInDay($day, $eventos) {
foreach ($eventos as $date => $evento) {
    // echo $day . " vs " . $evento["inicio"] ."<br>";
    if($day == $evento["inicio"]) {
        return true;
    }       
}
// die();
// echo "<br><br>";
return false;
}

function head_calendar($mes_actual='',$ano_actual=''){
global $meses;
?>
<?php 


if(!isset($_GET["mes"])){

$mes = date("m");
$ano = date("Y");
} else {
$fecha = intval($_GET["mes"]);
$mes = substr($fecha,4,2);
$ano = substr($fecha,0,4);
}

if($mes_actual){
$mes = $mes_actual;
}

echo '<a href="javascript:getMes(\''.$ano.$mes.'    \')">'.$meses[intval($mes)].'</a>';

if($mes_actual){
echo " ".$ano_actual;
}

$mes_ant = $mes - 1;
$mes_next = $mes + 1;

if($mes_ant<10) $mes_ant = "0".$mes_ant;
if($mes_next<10) $mes_next = "0".$mes_next;

$ano_ant = $ano;
$ano_next = $ano;

if($mes_ant == "00"){
$mes_ant = "12";
$ano_ant = $ano - 1;
}
if($mes_next == 13){
$mes_next = "01";
$ano_next = $ano + 1;
}

$fecha1 = $ano_ant.$mes_ant;
$fecha2 = $ano_next.$mes_next;


if(!$mes_actual){
?>
<a class="pull-left" href="javascript:getMes('<?php echo $fecha1;?>');"><span class="glyphicon glyphicon-chevron-left"     aria-hidden="true"></span></a> 
<a class="pull-right" href="javascript:getMes('<?php echo $fecha2;?>');"><span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span></a>

<?php
}

}

function getEventos($dia,$mes,$ano){
global $fechas;
if($dia<10) $dia = "0".$dia;
if($mes<10) $mes = "0".$mes;
$fecha = $ano.$mes.$dia;
$tiene_eventos = 0;
foreach($fechas as $f){
    //if($f["inicio"]<=$fecha AND $f["fin"]>=$fecha){
    if($f["inicio"]==$fecha){
        $tiene_eventos = 1;
    }
}
return $tiene_eventos;
}

function getFechas(){
global $wpdb;
$fechas = Array();

if(is_single()){
    $more = " p.ID = $post->ID AND ";
} else {
    $more = " ";
}
add_filter('be_events_manager_metabox_override','uuu return_true');
函数绘制日历($month,$year,$link=0){
如果(isset($_GET[“mes”]){
//在需要的事件中询问
$inicio=STROTIME($_GET[“mes”].“01”);
$fin=标准时间(日期(“Y-m-t”,$inicio));
}否则{
//实际发生的事件
$inicio=标准时间(日期(“Ym01”);
$fin=标准时间(日期(“Y-m-t”,$inicio));
}
$eventos=getPostsByFechas($inicio,$fin);
//echo“使用$year-$month绘制日历”;
/*画图台*/
$today=日期(“j”);
$tmes=日期(“n”);
$tano=日期(“Y”);
$calendar='';
/*表格标题*/
$headers=array('LUN','MAR','MIE','JUE','VIE','SAB','DOM');
$calendar.=''。内爆('',$标题)。'';
/*几天几周过去了*/
$init_day=date('w',$initio-60*60*24);///Dia de la semana que empieza el mes(menos uno..PHP sucks)//(0,0,0,$month,1,$year)-1);
$days_in_month=日期('t',mktime(0,0,0,$month,1,$year))//
$days_in_this_week=1;
$day_计数器=0;
$dates_array=array();
/*第一周划船*/
$calendar.='';
/*打印“空白”天数,直到当前星期的第一天*/
对于($x=0;$x<$init_day;$x++)而言:
$calendar.='';
$days_in_this_week++;
endfor;
/*继续前进*/
//打印(事件);
对于($list\u day=1;$list\u day$evento){
//echo$day.“vs.”$evento[“inicio”]。“
”; 如果($day==$evento[“inicio”]){ 返回true; } } //模具(); //回声“

”; 返回false; } 函数头日历($mes\U实际值=“”,$ano\U实际值=“”){ 全球500万美元; ?> (函数($){ window.showEvents=功能(直径、mes){ var fecha=“”; 如果(直径!==null){ fecha=“fecha=”+直径; }否则如果(mes!==null){ fecha=“mes=”+mes; } var url=“../wp admin/admin ajax.php?action=get_eventos&”+fecha; $(“#eventospordia”).html(“”); $.ajax({ 键入:“获取”, url:url }).done(功能(salidahtml){ if($(“#eventospordia”).hasClass(“slick初始化”)){ $(“#eventospordia”).slick('unslick'); }否则{ //偏心滑块 } $(“#eventospordia”).html(salidahtml); 美元(“#eventospordia”)。光滑({ 是的, 幻灯片放映:3, 幻灯片滚动:2, 无限:错 }); getInfoCurso($(“#eventospordia”).find(“li:first child”).attr(“data curso id”); }); } window.getMes=函数(fecha_mes){ $(“#日历月”).html(“”); $.ajax({ 键入:“获取”, url:“../wp admin/admin ajax.php?action=get_mes&mes=“+fecha_mes” }).done(功能(salidahtml){ $(“#日历月”).html(salidahtml); $(“#年历”).html(fecha#u mes.substr(0,4)); }); showEvents(空,fecha_mes); } window.getInfoCurso=函数(id){ $(“#getinfocurso”).html(“”); $.ajax({ 键入:“获取”, url:“../wp admin/admin ajax.php?action=get_infocurso&id=“+id” }).done(功能(salidahtml){ $(“#getinfocurso”).html(salidahtml); }); } $(文档).ready(函数(){ showEvents(null,null); }); })(jQuery);

谢谢!

由于其他月份的HTML是由AJAX获取的,您是否也为AJAX查询运行上面的PHP代码?检查我的更新:请不要破坏您的问题。
 <?php 
function print_my_inline_script() {

?>
<script type="text/javascript">
  (function($) {
    window.showEvents = function(dia, mes){
      var fecha = "";
      if ( dia !== null ) {
        fecha = "fecha=" + dia; 
      } else if (mes !== null) {
        fecha = "mes=" + mes;
      } 
      var url =  "../wp-admin/admin-ajax.php?action=get_eventos&"+fecha;
      $("#eventospordia").html("<div class='load'><img src='../wp-content/themes/culinary/assets/img/load.gif'></div>");
      $.ajax({
        type: "GET",
        url: url
      }).done(function(salidahtml) {

        if ($("#eventospordia").hasClass("slick-initialized")) {
          $("#eventospordia").slick('unslick');
        } else {
          // Iniciar Slider            
        }

        $("#eventospordia").html(salidahtml);

        $("#eventospordia").slick({
          vertical: true,
          slidesToShow: 3,
          slidesToScroll: 2,
          infinite: false
        });


        getInfoCurso($("#eventospordia").find("li:first-child").attr("data-curso-id"));
      });
    }

    window.getMes = function(fecha_mes){
      $("#calendarmonth").html("<div class='load'><img src='../wp-content/themes/culinary/assets/img/load.gif'></div>");
      $.ajax({
        type: "GET",
        url: "../wp-admin/admin-ajax.php?action=get_mes&mes="+fecha_mes
      }).done(function(salidahtml) {
        $("#calendarmonth").html(salidahtml);
        $("#year_calendar").html(fecha_mes.substr(0, 4));
      });
      showEvents(null, fecha_mes);
    }

    window.getInfoCurso = function(id){
      $("#getinfocurso").html("<div class='load'><img src='../wp-content/themes/culinary/assets/img/load.gif'></div>");
      $.ajax({
        type: "GET",
        url: "../wp-admin/admin-ajax.php?action=get_infocurso&id="+id
      }).done(function(salidahtml) {
        $("#getinfocurso").html(salidahtml);

      });
    }

    $(document).ready(function(){
      showEvents(null, null);   

    });
  })(jQuery);
</script>