element80
Постоялец
- Регистрация
- 4 Апр 2014
- Сообщения
- 83
- Реакции
- 28
- Автор темы
- #1
доброго времени суток.
на всякий случай напомню, что я в php оценил бы себя на 0 по шкале от 1 до 10, тем не менее мечта ведет меня вперед и приходится делать такую вот хрень.
собственно суть проблемы - при выводе данных из репитера значение функции убивает форматирование элементов на странице, вплоть до предыдущей строки.
чтоб было понятнее - загружу скрины. движок - wordpress, если это важно.
это кусок кода с созданием функции из файла functions.php:
продублирую текстом:
это собственно кусок template-файла, куда эта функция и вызывается:
дубль текстом:
а вот результат, который я вижу на странице (спасибо отладчику chrome)
как видим, форматирование элемента <li> убито, более того, если <?php echo get_places_phone(); ?> заключить в <span>, то он (спан) тоже исчезает.
сначала подумал что это из-за двойного echo (в функции и в template), но удаление оного на ситуацию не влияет.
в предыдущем <li> элементе с адресом (там нет repeater'a) функция возвращает значение с помощью return, и действительно, если попробовать в нашей проблемной функции get_places_phone() вернуть значение через return, то форматирование возвращается в норму, но выводится только один последний номер телефона.
погуглил - оказалось что return возвращает только одно значение. пробовал шаманить с выводом через массив, да и вообще по всякому, убил уже часов 6, слишком уж мало у меня знаний и опыта.
укажите пожалуйста где я ошибся, или намекните хотя-бы.
p.s. код наверное ужасно костыльный, еще раз извиняюсь
на всякий случай напомню, что я в php оценил бы себя на 0 по шкале от 1 до 10, тем не менее мечта ведет меня вперед и приходится делать такую вот хрень.
собственно суть проблемы - при выводе данных из репитера значение функции убивает форматирование элементов на странице, вплоть до предыдущей строки.
чтоб было понятнее - загружу скрины. движок - wordpress, если это важно.
это кусок кода с созданием функции из файла functions.php:
продублирую текстом:
Код:
/* Выводим номера телефонов организации (убивает форматирование) */
function get_places_phone() {
$rows = get_field('phones') ;
$row_count = count($rows) ;
$counter = 0 ;
if( have_rows('phones') ) : while( have_rows('phones') ) : the_row();
$phone_code = get_sub_field('phone_code') ;
$phone_number = get_sub_field('phone_number');
$places_phone = '+38'."$phone_code"."$phone_number" ;
if ($counter < $row_count -1) { echo $places_phone . ', ' ; }
else { echo $places_phone ; }
$counter ++ ;
endwhile;
endif;
};
это собственно кусок template-файла, куда эта функция и вызывается:
дубль текстом:
Код:
<div class="place-card">
<ul>
<?php if (get_places_address() !="") { ?><li class="fa fa-home">Адресс: <?php echo get_places_address(); ?></li><?php }; ?>
<?php if (get_places_phone() !="") { ?><li class="fa fa-phone">Тел.: <?php echo get_places_phone(); ?></li><?php }; ?>
</ul>
</div>
а вот результат, который я вижу на странице (спасибо отладчику chrome)
как видим, форматирование элемента <li> убито, более того, если <?php echo get_places_phone(); ?> заключить в <span>, то он (спан) тоже исчезает.
сначала подумал что это из-за двойного echo (в функции и в template), но удаление оного на ситуацию не влияет.
в предыдущем <li> элементе с адресом (там нет repeater'a) функция возвращает значение с помощью return, и действительно, если попробовать в нашей проблемной функции get_places_phone() вернуть значение через return, то форматирование возвращается в норму, но выводится только один последний номер телефона.
погуглил - оказалось что return возвращает только одно значение. пробовал шаманить с выводом через массив, да и вообще по всякому, убил уже часов 6, слишком уж мало у меня знаний и опыта.
укажите пожалуйста где я ошибся, или намекните хотя-бы.
p.s. код наверное ужасно костыльный, еще раз извиняюсь
Последнее редактирование: