如何在函数内返回函数(与echo相反)

时间:2011-02-08 01:01:50

标签: php wordpress api

所以,为了让这段代码正常工作,我需要通过return而不是echo来输出函数“get_flickr_rss”...我相信这段代码对我不起作用的原因是因为“get_flickr_rss”函数本身在某种程度上默认为回声而不是回归。如何调用函数强制它返回而不是回显?

function generate_flickr_rss($atts, $content = null) {
    // default parameters
    extract(shortcode_atts(array(
        'set' => '72157625809767439',
        'photos' => '20'
    ), $atts));
    // Call FLickrRSS Hook
    return get_flickrRSS(array('set' => $set, 'num_items' => $photos, 'type' => 'set'));
}

我尝试使用以下代码将其作为返回进行逆向工程,但不幸的是,没有骰子。

function generate_flickr_rss($atts) {
    // default parameters
    extract(shortcode_atts(array(
        'set' => '72157625809767439',
        'photos' => '20'
    ), $atts));
    // Call FLickrRSS Hook
    $flickr_rss_return = get_flickrRSS(array('set' => $set, 'num_items' => $photos, 'type' => 'set'));
    return $flickr_rss_return;
}

add_shortcode('flickr_rss', 'generate_flickr_rss');

add_shortcode('flickr_rss', 'generate_flickr_rss');

3 个答案:

答案 0 :(得分:2)

使用输出缓冲,您可以捕获函数的输出。

ob_start();
get_flickrRSS(...);
return ob_get_clean();

当然你应该更改函数以返回它的输出,但我想这是不可能的。 ; - )

答案 1 :(得分:1)

我看了一下WP插件flickrRSS,但改变并不是那么好。

在函数printGallery中,有许多echo语句。将这些替换为将回显的字符串连接到在函数开头定义为空字符串的$result变量的行。

然后,在$result函数的末尾返回printGallery。然后,根据您的需要(由另一个输入参数定义)将get_flickrRSS修改为returnecho此字符串。

当然,所有这些都会在下次更新插件时被覆盖,所以我建议将插件编写者指向此Stack Overflow页面并要求他修改插件以长期支持您的需求:)

答案 2 :(得分:0)

$foo = get_flickrRSS(.....;
return $foo;