Wordpress Custom Query String - PullRequest
       3

Wordpress Custom Query String

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

У меня есть мета-поле с именем date, и мне нужно запросить все записи, где эта отметка времени равна или меньше, чем сегодня ...

    <?php

$time = time();
$querystr = "
    SELECT wposts.*
    FROM $wpdb->posts wposts, $wpdb->postmeta wpostmeta
    WHERE wpostmeta.meta_key = 'date'
    AND wpostmeta.meta_value <= $time
 ";
$pageposts = $wpdb->get_results($querystr, OBJECT);
?> 

1 Ответ

0 голосов
/ 27 мая 2011

Вы можете попробовать что-то вроде этого:

$today = date('Y-m-d');

$querystr = "
    SELECT *
    FROM wp_posts, wp_postmeta
    WHERE wp_posts.ID = wp_postmeta.post_id
    AND wp_postmeta.meta_key = 'date'
    AND wp_posts.post_status = 'publish'
    AND wp_posts.post_type = 'post'
    AND STR_TO_DATE(wp_postmeta.meta_value, '%Y/%m/%d') <= '$today'
    ORDER BY STR_TO_DATE(wp_postmeta.meta_value, '%Y/%m/%d') ASC
";

$custom_loop = $wpdb->get_results($querystr, OBJECT);

В последних двух строках запроса очереди вы должны указать формат вашей даты (в вашем настраиваемом поле «дата»).Например, если ваше пользовательское поле «дата» имеет формат дд / мм / ГГГГ, вы должны использовать:

AND STR_TO_DATE(wp_postmeta.meta_value, '%d/%m/%Y') <= '$today'
ORDER BY STR_TO_DATE(wp_postmeta.meta_value, '%d/%m/%Y') ASC

$today дата имеет , чтобы быть Y-m-d, потому что этоформат времени по умолчанию, используемый для сравнения mysql.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...