尽管使用foreach,Wordpress短代码仅从Feed中返回1

时间:2013-02-08 22:37:47

标签: wordpress foreach rss return shortcode

我正在尝试创建一个自定义Wordpress插件,它利用短代码输出我想要的内容。在这个文本代码中,我试图读取一个rss文件,并只吐出前5个Feed的列表。

$showno是短代码变量之一,因此我可以使用以下[player show=foo snowno=5]。在示例中,未使用代码$show

以下代码仅显示Feed列表中的最新项目。如果我将return更改为echo,那么它会按预期工作,除非它显示在帖子顶部而不是我输入短代码的位置。我搜索了一个答案,提供的解决方案只是“使用返回”,我已经完成了......

欣赏建议。感谢

include_once(ABSPATH . WPINC . '/rss.php');         

$num_items = $showno;
$feedurl = 'http://feeds.bbci.co.uk/news/rss.xml';
$feed = fetch_rss($feedurl);
$items = array_slice ($feed->items, 0, $num_items); 

foreach ($items as $item ) {
  $title = $item[title];
  $mp3link   = $item[link];
  $description  =  $item[description];
  return "<li>$title - $description</li>";  
}     

1 个答案:

答案 0 :(得分:1)

Shortcodes应该返回而不回显。

在您的代码中,您正在中断foreach的执行并返回第一个值。

你应该构建一个字符串变量,并在foreach循环之后返回它,所以你的所有循环都会被包含在内,例如:

$final_html = '';
foreach( $items as $item )
{
    $final_html .= "<li>$title - $description</li>"; 
}
return $final_html;