从帖子ID输入the_loop()

时间:2014-12-04 10:37:34

标签: php wordpress loops

我已经找到了这个问题,我以前没见过它。如果这是一个重复的问题,我很抱歉。

我已经对我的自定义数据库表进行了复杂的查询,现在我有一系列wordpress帖子ID。

现在我想用the_loop向他们展示,但我无法做到这一点。我认为建议您通过ajax显示结果非常重要,因此所有这些功能都在functions.php中(可能这些信息无关紧要)。

目前我用以下内容获取帖子数据:

function imprimirResultados($resultados = null){
    if ($resultados){
        echo '<div class="resultados">';
        foreach ($resultados as $post_id){
            $post = get_post( $post_id[0], ARRAY_A );
            echo '<div class="post" id="post-'.$post['ID'].'">
                  <h2><a href="'.$post['guid'].'" rel="bookmark" title="Permanent Link to '.$post['post_name'].'">
                  '.$post['post_title'].'</a></h2>
                  <div class="entry">
                     '.$post['post_excerpt'].'
                  </div>
                </div>';
        }
        echo '</div>';
        var_dump($post);
    }else{
        echo    '<h2 class="center">No encontrado</h2>
                <p class="center">Lo sentimos, pero la búsqueda no obtuvo resultados.</p>';
    }
}

但这不是一个干净的方法,我不能使用the_loop()生成的对象已有的其他功能。

---------------------------------编辑------------- ------------------

我在这里留下我使用的功能:

function resultadosLigeros_callback(){

    (...)
    $querystr = cargar_ligeros($marca,$modelo,$combustible,$tipo,$anio); //This function generate a MySQL query
    $resultados = $wpdb->get_results($querystr, ARRAY_N);
    imprimirResultados($resultados, $querystr);//This function is the one I wrote before

    die();
}

1 个答案:

答案 0 :(得分:1)

您需要根据自己的帖子ID生成新的WP_Query。具体来说,您需要使用post__in

例如,由于$resultados是一个数组:

<?php
    // Fetch the posts
    $query = new WP_Query( array( 'post__in' => $resultados ) );

    // The Loop
    while ( $query->have_posts() ) : $query->the_post();
?>

然后,您可以直接在模板逻辑中使用the_ID()等函数。