如何将自定义查询转换为标准循环?

时间:2011-07-15 作者:supertrue

我正在尝试修改结果在帖子列表中的显示方式,该列表当前由下面的代码控制。但是,它不是在WP\\u查询中构建的while ( $the_query->have_posts() ) : $the_query->the_post(); 我已经习惯了这种样式,并且已经构建了很多短代码和循环样式。

如何将下面的代码更改为“常规”Wordpress循环,以允许我使用像\\u title()这样的模板标记?

    $totalposts = $wpdb->get_results($querystr, OBJECT);
    $wp_query->request = $querystr . " LIMIT " . $ppp . " OFFSET " .$offset;
    $results = $wpdb->get_results($wp_query->request, OBJECT);
    foreach ($results as $result) {
        $offset++;
        $output .= \'<a href="\'.get_post_permalink($result->ID).\'">\' . $result->post_title . \' (\' . $result->post_date . \')</a><br>\';
    }

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

为了能够使用模板标记,在获得自定义选择查询后,您必须做两件事:

您必须声明global $post 变量

$results = $wpdb->get_results($wp_query->request, OBJECT);
global $post;
foreach ($results as $post) {
    setup_postdata($post); 
?>
<h4><a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></h4>
等等。

这一点的关键在于本法典页面:

Displaying posts using a custom select query

SO网友:Scott

我过去是如何进行自定义查询的$wpdb->get_col() 刚刚返回了一组帖子的ID。然后我把它传给get_posts() 将ID传递给post__in 参数这样,您就可以使用WP标准控件。

结束

相关推荐

Loop inside the loop

我正在做一个项目,我需要显示一个类别中的2篇文章,还需要在这篇文章之间设置另一个循环,以显示其他类别中的随机文章列表。最简单的方法是创建3个查询,但当我为一个类别创建2个查询时,出现了一个问题,一个循环中断并显示两个帖子,第二个很好。我在第二次查询中使用了offset参数,但它不起作用。<?php $first_query_args = array( \'category_name\' => \'first-category\',&