POST__IN-将来自Foreach循环的内容放入数组内

时间:2014-03-12 作者:Roc

我知道这段代码是错误的,但它是我努力实现的基础。

我正在通过PHP解析一个xml提要,并运行一个foreach循环,以从特定键获取一个值。

以下是我正在使用的代码片段:

$feed = file_get_contents("https://www.feedurl.com/xml"); // Feed URL
$xml = new SimpleXmlElement($feed);

$output = array();
foreach($xml->entry as $entry){
  $attributes = $entry->id->attributes(URI_RSS);
  $im = $entry->children(URI_RSS);                                    

  // Get item\'s ID
  $id = $entry->id;
  $attr = $id->attributes(\'im\', TRUE);

  $output[] = $attr[\'id\'];
}

$testarray = "\'" . implode("\', \'", $output) . "\'"; // Place the \'output\' from the foreach into this formation: \'xxx\',\'xxx\',\'xxx\',etc    
$lastarray = array($testarray);

$args = array(
  \'post_type\' => $post_type,
  \'post__in\'      => $lastarray
);

$wp_query = new WP_Query( $args );
当我回显“$testarray”时,它会以我设置的方式正确显示:“xxx”、“xxx”、“xxx”等

但是,尝试将“$testarray”作为“post\\uu-in”的数组无法工作。我确信我的代码设置不正确,也不确定我将如何做到这一点。

“post\\uu-in”将分页,通过无限循环加载。

谢谢乔。

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

更新以了解我能够通过以下代码片段实现这一点:

供参考:

$jsonfeed = file_get_contents(\'http://www.jsonfeed.com\');
$results = json_decode($top100, true);

foreach($results[\'feed\'][\'entry\'] as $post){ // This is custom for my json
  $post_ids[] = $entry[\'id\'][\'attributes\'][\'second_id\'];
}

var_dump($post_ids); // dump array

$args = array(
  \'post_type\' => $post_type,
  \'post__in\'  => $post_ids,
  \'ignore_sticky_posts\' => 1,
);

$wp_query = new WP_Query( $args );

if (have_posts()) :
   usort($wp_query->posts, function($a, $b) use ($post_ids) { // Lists loop in order of the array -> http://pastebin.com/3vwiDSfb
      return array_search($a->ID, $post_ids) - array_search($b->ID, $post_ids);
   });
   while(have_posts()) : the_post();
   endwhile;    
endif;
谢谢你的帮助。

SO网友:user3313494

查看您的代码-$lastarray将不是一个ID数组(正如您所期望的那样),而是一个包含一个逗号分隔ID字符串的单个元素的数组。

$output已经是$attr[\'id\']的数组-请尝试对以开头的行进行注释(添加//到开头)$testarray$lastarray 和更换\'post__in\' => $lastarray 具有\'post__in\' => $output

看看这是否有帮助。

编辑:要澄清-post\\u in需要一个数组(而不是“id”、“id”、“id”字符串)-请参阅here

乔恩

结束

相关推荐

自定义帖子类型的URL重写调整导致模板恢复为index.php

我有一个带有URL永久链接重写的自定义帖子类型,如果它使用/mynews/stories/YYYY/mm/story名称,它似乎可以工作,但如果我将“mm”改为每月的前3个字母(例如1月、2月、3月等),模板层次结构会中断,并使用索引。php。我的代码在这里http://pastebin.com/RS1DMbB6我把这些都放在函数里了。php文件,因为我不允许添加插件。因此,当我从%monthnum%更改为%month%时,URL重写工作正常,但使用了错误的模板。post\\u type\\u link