OK.
У меня очень длинная и довольно сложная функция.
Это выглядит почти так:
<?php
function hello() {
echo 'My Function!' ?>
<ul>
<li> Blablabla </li>
<ul>
(...)
<?php } ?>
Огромная проблема в том, что я не в состоянии что-либо повторить.
Моя функция ДОЛЖНА возвращать свое содержимое вместо отображения или прямого вывода (так должно быть, это шорткод Wordpress, а когда я повторяю - содержимое отображается вверху страницы - ВСЕГДА, а не в место, где я хочу их):
<?php
function hello() {
$output .= 'My Function!';
$output .= '<ul>';
$output .='<li> Blablabla </li>';
$output .='<ul>';
(...)
return $output;
} ?>
Надеюсь, до сих пор легко.
Теперь реальные проблемы:
У меня есть тонны прямого кода, например:
?>
<div>
<span>
<p>Smth</p>
<a>smth</a>
</span>
</div>
<?php
Добавление $ output везде убивает красивые абзацы / пробелы, и код становится ОЧЕНЬ ТРУДНЫМ для чтения и понимания (и все элементы HTML теперь являются частями переменных, поэтому даже мой редактор php плохо их обрабатывает и раскрашивает их как элементы PHP ).
И еще одна вещь, у меня тонны таких строк:
<a href="<?php bloginfo('template_directory'); ?>/includes/php/timthumb.php?src=<?php echo $url; ?>&h=<?php if($items=="one") echo 320; elseif($items=="two") echo 230; elseif($items=="three") echo 180; elseif($items=="four") echo 130; ?>&w=<?php if($items=="one") echo 600; elseif($items=="two") echo 420; elseif($items=="three") echo 277; elseif($items=="four") echo 203; ?>" title="<?php the_title(); ?>" class="link">
(да, это одна строка)
И я абсолютно не знаю, как добавить такие строки в $ output.
$output .= '<a href="<?php bloginfo('template_directory'); ?>/includes/php/timthumb.php?src=<?php echo $url; ?>&h=<?php if($items=="one") echo 320; elseif($items=="two") echo 230; elseif($items=="three") echo 180; elseif($items=="four") echo 130; ?>&w=<?php if($items=="one") echo 600; elseif($items=="two") echo 420; elseif($items=="three") echo 277; elseif($items=="four") echo 203; ?>" title="<?php the_title(); ?>" class="link"> ';
Конечно, не работает (даже с "до" и ").
Я считаю, что ДОЛЖЕН быть более простой способ прикрепить весь код для возврата, но как?
Я пытался с ob_start (); перед кодом и возвращением ob_get_clean (); после, но вместо содержимого выводится короткое имя.