2014-03-11 2 views
1

나는 내 wordpress 웹 사이트에서 사용자 정의 게시물을 만들었습니다. 이 게시물에서 YYYY-MM-DD 형식의 날짜로 이벤트를 만듭니다. 다음 웹 사이트에서 다음 3 개의 일정을 표시하려고합니다.날짜가 포함 된 배열 정렬 및 색인 다시 배열

Array{ 
    [0]=> Array(
     [EventDate] => 2014/03/14 
     [TimestampEvent] => 1394582400 
     [DeltaEvent] => 22327 
    ) 
    [1]=> Array(
     [EventDate] => 2014/03/15 
     [TimestampEvent] => 1394582401 
     [DeltaEvent] => 22328 
    ) 
    [2]=> Array(
     [EventDate] => 2014/03/16 
     [TimestampEvent] => 1394582402 
     [DeltaEvent] => 22329 
    ) 
} 

내가 싶습니다 :

나는 다음과 같은 배열을 만든

  • 무시 이미 일어난 이벤트를;
  • 가장 가까운 곳에서 내 미래의 이벤트를 정렬하십시오.
  • 내 웹 사이트에 다음 3 개의 이벤트를 표시하십시오.

나는 이미 마지막 점을 분류했습니다. 문제는 내 이벤트 정렬에 관한 것입니다.

지금까지 uksort() 함수를 사용해 보았지만 작동시키지 못했습니다.

아이디어가 있으십니까?

편집 됨;

@Bram 솔루션은 훌륭하게 작동합니다!

Array{ 
    [0]=> Array(
     [EventDate]=> 2014/03/16 
     [TimestampEvent] => 1394582402 
     [DeltaEvent] => 22329 
    ) 
} 

가 어떻게이 $ 다음 배열에서 EVENTDATE 키를 액세서 않습니다 유일한 것은 배열 $의 구조가 옆에 있다는 것입니다? 나는 $ [0] [0]을 시도했지만 놀랍게도 효과가 없었다.

재 편집;

$next[$i][DateEvenement] 

나는 거의 끝났어! 이제 모든 날짜가 좋은 웹 사이트에 모든 것이 표시됩니다! 유일한 것은 3 개의 가장 가까운 날짜가 wordpress에 추가 된 순서대로 표시된다는 것입니다. 내 코드는 다음과 같습니다.

$my_query = new WP_Query('post_type=event'); 
while ($my_query->have_posts()) : $my_query->the_post();          
for($i=0;$i<count($next);$i++){           
    if(get_field('date') == $next[$i][DateEvent]){ ?> 
     <div> 
      <h2><?php echo the_title(); ?></h2> 
      <p><?php echo the_content(); ?></p> 
     </div> 
    <?php 
    } 
} 
endwhile;?> 

문제는 아마도 내 쿼리에서 발생하지만 문제를 해결하는 방법은 확실하지 않습니다.

도움 주셔서 감사합니다.

다시 편집하십시오.

@ 자신

나는 그것을 해냈다! 그것은 매력처럼 작동합니다. 나는 단지 내 질문을 고쳐야 만했다. 이것은 내가 사용 된 코드입니다 :

for($i=0;$i<count($next);$i++){ 
    $args = array('numberposts' => 1,'post_type' => 'evenement','meta_key' => 'date','meta_value' => $next[$i][DateEvenement]); 
    $the_query = new WP_Query($args); 
    if($the_query->have_posts()){ 
     while ($the_query->have_posts()){             
      $the_query->the_post();            
      if(get_field('date') == $next[$i][DateEvenement]){ ?>              
       <div>              
        <h2><?php echo the_title(); ?></h2>             
        <p><?php echo the_content(); ?></p>                
       </div>                  
<?php 
      } 
     } 
    } 
}?> 

답변

1

그러나이 같은 대답은 거의 답을 얻지 못할 것입니다 ...

이미 발생한 이벤트는 무시하십시오.

$new_data = array_filter($data, function ($a) { return $a['TimestampEvent']>time(); }); 

정렬 먼 근처에서 내 미래의 사건;

usort($data, function ($a, $b) { 
    if ($a['TimestampEvent']==$b['TimestampEvent']) return 0; 
    return ($a['TimestampEvent'] < $b['TimestampEvent']) ? -1 : 1; 
}); 

표시 내 웹 사이트에 다음 3 개 이벤트.

$next = array_slice($data, 0, 3); 
+0

나는 내 질문을 다른 질문과 함께 편집했습니다. 너 체크 좀 해줄 래? – Alex

+0

너 자신을 고쳐 주었고 답변을 게시하는 데 좋은 직장이 된 것 같습니다. – Bram