2013-11-26 7 views
1

아무도 나를 아래의 WP_Query (들)을 단순화 도와 드릴까요? 그것들은 구조가 같지만 미래를 목표로하고 과거는 과거를 목표로합니다.WP_Query를 단순화하는 방법은 무엇입니까?

<?php 
    $future = date('Ymd', strtotime("+1 year")); 
    $now = date('Ymd', strtotime("now")); 
    $past = date('Ymd', strtotime("-1 year")); 
?> 

<?php 
    $args_future = array(
     'post_type' => 'event', 
     'posts_per_page' => -1, 
     'meta_query' => array(
      array(
       'key' => 'event_date', 
       'value' => array($now, $future), 
       'type' => 'numeric', 
       'compare' => 'BETWEEN' 
      ) 
     ) 
    ); 
    $query_future = new WP_Query($args_future); 
?> 

<?php 
    echo '<h2>Future events</h2><ul class="future-events">'; 
    while($query_future->have_posts()) { 
     $query_future->the_post(); 
     echo '<li><a href="'.get_permalink($post->ID).'">'.get_the_title().'</a></li>'; 
    } echo '</ul>'; wp_reset_postdata(); 
?> 

<?php 
    $args_past = array(
     'post_type' => 'event', 
     'posts_per_page' => -1, 
     'meta_query' => array(
      array(
       'key' => 'event_date', 
       'value' => array($past, $now), 
       'type' => 'numeric', 
       'compare' => 'BETWEEN' 
      ) 
     ) 
    ); 
    $query_past = new WP_Query($args_past); 
?> 

<?php 
    echo '<h2>Past events</h2><ul class="past-events">'; 
    while($query_past->have_posts()) { 
     $query_past->the_post(); 
     echo '<li><a href="'.get_permalink($post->ID).'">'.get_the_title().'</a></li>'; 
    } echo '</ul>'; wp_reset_postdata(); 
?> 

답변

0

코드가 그렇게 나쁘지 않습니다. 당신이 가독성을 유지하기 원한다면,이 루프를 몇 개의 루프로 분할하는 것은 피할 수없는 일입니다. 여기서 내가 한 것은 코드를 다차원 배열로 구성하는 것입니다. 시험되지 않았지만 시작해야합니다.

<?php 
$future = date('Ymd', strtotime("+1 year")); 
$now = date('Ymd', strtotime("now")); 
$past = date('Ymd', strtotime("-1 year")); 
$args = array(
    'future'=>array(
     'ul_class'=>'future-events', 
     'label'=>'Future Events', 
     'query_args'=>array(
      'post_type' => 'event', 
      'posts_per_page' => -1, 
      'meta_query' => array(
       array(
        'key' => 'event_date', 
        'value' => array($now, $future), 
        'type' => 'numeric', 
        'compare' => 'BETWEEN' 
       ) 
      ) 
     ) 
    ), 
    'past'=>array(
     'ul_class'=>'past-events', 
     'label'=>'Past Events', 
     'query_args'=>array(
      'post_type' => 'event', 
      'posts_per_page' => -1, 
      'meta_query' => array(
       array(
        'key' => 'event_date', 
        'value' => array($past, $now), 
        'type' => 'numeric', 
        'compare' => 'BETWEEN' 
       ) 
      ) 
     ) 
    ) 
); 
foreach($args as $arg){ 
    $q = new WP_Query($arg['query_args']); 
    printf('<h2>%s</h2><ul class="%s">', $arg['label'], $arg['ul_class']); 
    while($q->have_posts()) : $q->the_post(); 
     echo '<li><a href="'.get_permalink($post->ID).'">'.get_the_title().'</a></li>'; 
    endwhile; 
    echo '</ul>'; 
} 
wp_reset_postdata(); 
?> 
관련 문제