WordPress: использование предложения Where с настраиваемым полем - PullRequest
0 голосов
/ 07 марта 2011

У меня есть куча событий, которые перечислены на определенной странице.Каждое событие - это пост.Мне нужно, чтобы они отображались в порядке их появления, а НЕ в порядке даты публикации.Итак, я создал настраиваемое поле с именем TheDate и для каждого из них введите дату в следующем формате: 20110306.

Затем я написал свой запрос следующим образом:

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' );

Я полагаю, что это просто вопрос того, где я использую этот фильтр, возможно, он не в том месте.Или, может быть, сам фильтр плохой.Любая помощь или руководство будет принята с благодарностью.Спасибо!

1 Ответ

0 голосов
/ 08 марта 2011

Если ваш код соответствует вашему вопросу, вы можете попробовать позвонить на add_filter перед query_posts.

Если вы используете 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,
  )
);
...