繁体   English   中英

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

[英]How to get posts with list of ID from SQL function result?

我是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列表。 如果我有ID列表,该如何获得帖子?

如果您只想检查此函数返回的内容,只需在执行查询后添加以下行即可:

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”] = >字符串(2)“ 12” [“ post_date”] =>字符串(19)“ 2012-07-27 08:53:22” [“ post_date_gmt”] =>字符串(19)“ 2012-07-27 08: 53:22“ [” post_content“] =>字符串(356)”文本“ [” post_title“] =>字符串(58)”Продам2-кквартируРусскоеПоле“ [”“ post_excerpt”] =>字符串(0)“ “ [[” post_status“] =>字符串(7)”发布“ [” comment_status“] =>字符串(4)” open“ [” ping_status“] =>字符串(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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM