如何从SQL函数结果中获取带有ID列表的帖子?

时间:2012-07-31 19:00:44

标签: php wordpress

我是PHP的新手,我需要你的建议。谢谢你的帮助!

我正在使用PHP,我只需要获得带有图片附件的帖子。 我写了sql函数:

global $wpdb;
$postsID = $wpdb->get_results
("
  SELECT ID
  FROM $wpdb->posts
  WHERE
    post_status = 'publish'
    AND
      ID IN (
    SELECT DISTINCT post_parent
    FROM $wpdb->posts
    WHERE
      post_parent > 0
    AND
      post_type = 'attachment'
    AND
      post_mime_type IN ('image/jpeg', 'image/png')
      )
    ORDER BY post_date DESC
    LIMIT 0 , 5
");

现在我想使用此函数的结果来处理get_posts(“p =结果函数”);

如何通过调用此函数来连接结果?我无法理解如何将参数传递给函数。

谢谢!

更新:据我所知,get_posts不允许我传递ID列表,我只能传递一个。如果我有一个ID列表,我如何获得帖子?

1 个答案:

答案 0 :(得分:1)

如果您只想检查此函数返回的内容,只需在执行查询后包含此行:

var_dump($postsID);

如果你想用数据做某事,那可以通过多种方式完成,但这取决于你想要做什么;在这个论坛上有太多的选择。

更新:根据以下评论中的对话,您似乎希望将结果的密钥($postsID)传递给$ wpdb-> get_posts()功能

如果get_posts()只使用唯一ID作为参数,则必须执行以下操作:

// I'm assuming a simple key=>value pair in your array. Modify your code as needed
foreach($postsID as $id) {
    $result = $wpdb->get_posts($id);

    // code that will do "something" with $result
}

更新2:由于$postsID如下所示:array(5){[0] => object(stdClass)#4015(23){[“ID”] => string(3)“779”[“post_author”] => string(2)“12”[“post_date”] => string(19)“2012-07-27 08:53:22”[“post_date_gmt”] => string(19)“2012-07-27 08:53:22”[“post_content”] => string(356)“Text”[“post_title”] => string(58)“Продам2-кквартируРусскоеПоле”[“post_excerpt”] => string(0)“”[“post_status”] => string(7)“publish”[“comment_status”] => string(4)“open”[“ping_status”] => string(4)“open”[“post_password”] => string(0)“”[“post_name”] => string(162)“%d0%bf%d1%80%

您将需要从每个对象获取ID并将其插入临时数组并将其传递给get_posts()

// $args = array( 'post__in' => array(779,772,768,761,716) ); 
$tempArr = array();
foreach ($postsID as $obj) {
    $tempArr[] = $obj->id;
}

$args = array('post__in' => $tempArr);
$result = $wpdb->get_posts($args);