使用新的wp_query将transofrm sql查询到wordpress查询

Adr*_*ian 6 php mysql sql-server wordpress

我试图将SQL查询转换为wordpress查询,但无法理解它是如何完成的?

查询我尝试转换为 new wp_query

$query = "  SELECT SQL_CALC_FOUND_ROWS distinct wp_posts.ID
            FROM   wp_posts
                   INNER JOIN wp_postmeta
                           ON ( wp_posts.id = wp_postmeta.post_id )
                   INNER JOIN wp_postmeta AS mt1
                           ON ( wp_posts.id = mt1.post_id )
            WHERE  1 = 1
                   AND wp_posts.id NOT IN ( 0 )
                   AND wp_posts.post_type = 'topic'
                   AND ( wp_posts.post_status = 'publish'
                          OR wp_posts.post_status = 'closed'
                          OR wp_posts.post_status = 'reported' )
                   AND ( wp_postmeta.meta_key = '_bbp_last_active_time')
            GROUP  BY wp_posts.id
            ORDER  BY wp_postmeta.meta_value DESC
            LIMIT  0, 10 
        ";
$topics = $wpdb->get_results($query, OBJECT);
Run Code Online (Sandbox Code Playgroud)

所以我可以使用

while($topics->have_posts()) : $topics->the_post(); ?>
Run Code Online (Sandbox Code Playgroud)

喜欢

$args = array(); // how do I convert to this.
$topics = new WP_query($args);
Run Code Online (Sandbox Code Playgroud)

小智 7

尝试:

$wpq = new WP_Query();
$wpq->parse_query($query);
$posts = $wpq->get_posts();
Run Code Online (Sandbox Code Playgroud)

或者使用标准的 WP_Query 函数:

$wpq = new WP_Query($query);
Run Code Online (Sandbox Code Playgroud)

  • -1 我不小心投了这个,因为它看起来像在工作。但事实证明并非如此。像这样初始化 WP_Query 将根据默认设置返回所有帖子类型,但似乎不会考虑传递的 SQL 查询。 (3认同)