2012-03-01 3 views
0

Возможно ли запустить цикл внутри функции do_shortcode()?Как запустить цикл внутри функции do_shortcode() WordPress?

Пример:

echo do_shortcode('[iscorrect]'.$text_to_be_wrapped_in_shortcode.'[/iscorrect]'); 

http://codex.wordpress.org/Function_Reference/do_shortcode

Я попытался создать функцию, чтобы получить данные и вставить его в массиве. Затем для каждого элемента в этом массиве возвращаем значение отдельного массива.

Пример:

function the_ips(){ 
    $ips = get_ips(); 
    foreach($ips as $ip){ 
     return $ip; 
    } 
} 

Я сбрасывал массив данных, чтобы убедиться, что есть правильные данные в нем. Все правильно. Он продолжает выводить первое значение массива в функции do_shortcode(), но ничего больше.

Вот что я пробовал:

echo do_shortcode('[iscorrect]'.the_ips().'[/iscorrect]'); 

или

$content = ''; 
$content .= '[iscorrect]'; 
$ips = get_ips(); 
foreach($ips as $ip){ 
    $content .= $ip;  
} 
$content .= '[/iscorrect]'; 
echo do_shortcode($content); 

Он по-прежнему продолжает производить первый результат массива и ничего другого.

ответ

0

Ваш звонок return немедленно возвращается из функции. Остальная часть цикла foreach никогда не запускается. Возможно, вы просто хотите присоединиться к ips?

return implode(" ", $ips); 

Или, как список:

function the_ips(){ 
    $ips = get_ips(); 
    $output = "<ol>"; 
    foreach($ips as $ip){ 
    $output .= "<li>{$ip}</li>"; 
    } 
    return $output .= "</ol>"; 
} 
+0

В конечном счете, я хотел бы вернуться каждый IP-адрес в качестве элемента списка в упорядоченном списке. –

+0

@MichaelEcklund обновленный пример – menacingly

Смежные вопросы