2011-03-07 11 views
0

特定のページにリストされている一連のイベントがあります。各イベントは投稿です。私はそれらが発生する順序で表示する必要があります。投稿日の順番ではありません。だから、私はTheDateと呼ばれるカスタムフィールドを作成し、それぞれのために、この形式で日付で入力しました:20110306.WordPress:カスタム欄でWhere句を使用する

その後、私はこのように私のクエリを書いた:

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

は完璧に動作して表示します正しい順序でイベントを送信します。しかし、今日からの日付のみを表示することも忘れないでください。私はそれが通過した日付を表示したくありません。これを行う方法は、「フィルタ」を使用しているようです。私はこれを試しましたが、うまくいきません。

$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

万一「> =」こと「=>」連結またはdoesnの」あなたの$でそれは問題なの? –

答えて

0

あなたのコードがあなたの質問と同じ場合は、の前にadd_filterコールを入れてみてください。

あなたはWordpressの3.1を使用している場合は、新しいmeta_queryパラメータを使用することができるはず、このような何か:

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, 
) 
); 
関連する問題