WordPress$wpdb从类别中获取帖子,并按自定义元排序

时间:2011-08-10 作者:Rocket Ronnie

我有一个自定义的“事件”帖子类型,其中有一个元键“event\\u date”

我使用以下内容检索这些帖子并按“event\\u date”进行排列

        global $wpdb;
        $today = date(\'Y/m/d\', strtotime("now"));
        $events = $wpdb->get_results("SELECT 
                                            posts.id, posts.post_title, meta.meta_value 
                                        FROM 
                                            {$wpdb->prefix}postmeta as meta
                                        LEFT JOIN 
                                            {$wpdb->prefix}posts as posts 
                                        ON 
                                            (meta.post_id = posts.id) 
                                        WHERE
                                            (meta.meta_key = \'event_date\' 
                                        AND
                                            meta.meta_value >= \'{$today}\'
                                        AND
                                            posts.post_status=\'publish\' and posts.post_date < NOW())
                                        ORDER BY 
                                            meta.meta_value
                                    ");
以上工作正常,但我只想显示特定类别的“事件”(比如类别id“5”)。如何修改查询以实现此目的?

任何帮助都将不胜感激:)

1 个回复
最合适的回答,由SO网友:Bainternet 整理而成

首先,你不应该使用NOW() 在“选择查询自”NOW() 将当前日期和时间返回到分秒。换句话说:此查询永远不会在缓存中着陆。

您可以使用WP\\u查询和posts_where 例如:

function filter_event_where( $where = \'\' ) {
    $date = date(\'Y-m-d\'); 
    $where .= " AND posts.post_date < \'".$date."\'";
    return $where;
}

add_filter( \'posts_where\', \'filter_event_where\' );
$today = date(\'Y/m/d\', strtotime("now"));
$query = new WP_Query( array(
    \'meta_key\' => \'event_date\', //used for order
    \'orderby\' => \'meta_value\', //used for order
    \'post_type\' => \'event\',
    \'meta_query\' => array(
        array(
            \'key\' => \'event_date\',
            \'value\' => $today,
            \'compare\' => \'>=\'
        )
    )
    ));
remove_filter( \'posts_where\', \'filter_event_where\' );

结束

相关推荐

无法登录WordPress,尽管将密码更改为MySQL中直接已知的密码或使用“通过电子邮件重置密码”功能

我无法登录wordpress网站v3。1.3即使我知道密码。为了更加肯定,我直接用以下命令更改了用户帐户(ID=1)的密码UPDATE wp_users SET user_pass=\"(MD5-hash-of-pwd)\" WHERE ID = 1; 我已经证实:ID=1是我的用户帐户,三次检查MD5哈希值是否与我设置的密码正确,四次检查我的用户名是否与我使用的用户名相同,然后转到wordpress登录,并被告知我的用户名和密码不正确。我还尝试使用“忘记密码”流,允许我通过电子邮件重置。我成功