2011-03-07 6 views
0

특정 페이지에 나열된 일련의 이벤트가 있습니다. 각 이벤트는 게시물입니다. 게시 날짜의 순서가 아닌 순서대로 표시해야합니다. 그래서, 사용자 정의 필드는 각각에 대해이 형식으로 날짜를 입력 TheDate에게 전화를 만들었습니다WordPress : 사용자 지정 필드에서 Where 절 사용

query_posts(array ('cat' => '4', 'posts_per_page' => -1, 'orderby' => 'meta_value_num',  
'meta_key' => 'TheDate', 'order' => 'ASC')); 

작품 완벽하고 표시 : 다음 20110306.

,이 같은 내 쿼리를 작성 정확한 순서의 이벤트. 그러나 나는 또한 오늘 이후의 날짜 만 표시하기를 원합니다. 나는 그것이 지나간 날짜를 표시하고 싶지 않습니다. 이렇게하는 방법은 "필터"를 사용하는 것 같습니다. 나는 이것을 시도했지만 효과가 없다.

$todaysdate = date('Ymd'); 
query_posts(array ('cat' => '4', 'posts_per_page' => -1, 'orderby' => 'meta_value_num', 
'meta_key' => 'TheDate', 'order' => 'ASC')); 
function filter_where($where = '') { 
$where .= "meta_value_num >= $todaysdate"; 
return $where; 
} 
add_filter('posts_where', 'filter_where'); 

필자가이 필터를 사용하고있는 곳의 문제 일뿐입니다. 잘못된 위치에있을 수도 있습니다. 아니면 필터 자체가 좋지 않을 수도 있습니다. 어떤 도움이나지도라도 크게 감사 할 것입니다. 감사!

+0

해야 "> ="수 "=>"당신의 $의 경우 연결 또는 아무튼 '당신은 워드 프레스 3.1을 사용하는 경우

하면 새로운 meta_query 매개 변수 같은 것을 사용할 수 있어야합니다 상관 없어? –

답변

0

귀하의 코드가 귀하의 질문과 동일하면 전화를 query_posts 앞에 붙여보십시오.

query_posts(
    array(
    'cat' => '4', 
    'meta_key' => 'TheDate', 
    'meta_query' => array(
     array(
     'key' => 'TheDate', 
     'value' => date('Ymd'), 
     'compare' => '>=', 
     'type' => 'NUMERIC' 
    ) 
    ), 
    'order' => 'ASC', 
    'orderby' => 'meta_value_num', 
    'posts_per_page' => -1, 
) 
);