Как вернуть функцию внутри функции (в отличие от эха) - PullRequest
0 голосов
/ 08 февраля 2011

Итак, чтобы заставить этот код работать, мне нужно вывести функцию "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 ]

2 голосов
/ 08 февраля 2011

С помощью буферизации вывода вы можете перехватить выходные данные функции.

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

Конечно, вам лучше изменить функцию, чтобы она возвращала выходные данные, но я думаю, что это невозможно по причине.; -)

1 голос
/ 08 февраля 2011

Я взглянул на плагин WP flickrRSS , и изменения не так уж велики.

В функции printGallery имеется ряд echo операторов. Замените их строками, объединяющими отображаемую строку в переменную $result, которую вы определяете как пустую строку в начале функции.

Затем верните $result в конце функции printGallery. Затем измените get_flickrRSS на return или echo эту строку в соответствии с вашими потребностями (как определено другим входным параметром).

Конечно, все это будет перезаписано при следующем обновлении плагина, поэтому я предлагаю указать автору плагина на страницу переполнения стека и попросить его изменить плагин для поддержки ваших потребностей в долгосрочной перспективе:)

0 голосов
/ 08 февраля 2011
$foo = get_flickrRSS(.....;
return $foo;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...