@Alexandrox

Как завернуть div в php код?

Делаю сайт на WordPress. Понадобилось создать дополнительное произвольное поле для статей (имя автора, по умолчанию такого поля нет). После создания вставляю в файл такой код:
<div class="creator">
		<?php if( is_single() ) { //выводим, только если это страница записи
				echo get_post_meta($post->ID, 'creator', true); // собственно, сам вывод
			}
		?>
</div>

Где 'creator' - это название доп. поля. А div класс с таким же именем я создал сам, чтоб придать форматирование.
Код работает, но дело в том, что не во всех статьях указаны авторы, и если автора нет, то этот div просто занимает место, пустой пробел над названием появляется, что некрасиво.
Может, лучше завернуть div в php код, чтобы div занимал место только когда доп. поле не пустое? Что-то вроде:
<?php if(isset($row)) {   //проверяем наличие
                    echo 
                    '<div class="creator">
		<?php if( is_single() ) { //выводим, только если это страница записи
				echo get_post_meta($post->ID, 'creator', true); // собственно, сам вывод
			}
		?>
	</div>'
                    }
                ?>

Но так не работает, видно что-то очень громоздкое и противоречивое соорудил. Как можно это сделать?
  • Вопрос задан
  • 2105 просмотров
Пригласить эксперта
Ответы на вопрос 3
@eSelf
<?php if(isset($row) && is_single()) { ?> // Непонятно что такое isset($row), возможно тут надо делать проверку на наличие поля creator? if(get_post_meta($post->ID, 'creator', true))
    <div class="creator">
        <?php echo get_post_meta($post->ID, 'creator', true);?>
    </div>
<?php }?>


И есть дефолтная вп функция для получения информации об авторе
https://developer.wordpress.org/reference/function...
Ответ написан
zorca
@zorca Куратор тега WordPress
Просто оборачиваете весь код PHP в <?php ?> , а HTML так и оставляете, без всяких echo. В вашем случае:
<?php if(isset($row)) { ?>
  <div class="creator">
    <?php if( is_single() ) { 
        echo get_post_meta($post->ID, 'creator', true);
      }
    ?>
  </div>
<?php } ?>
Ответ написан
Комментировать
@Alexandrox Автор вопроса
Не работает. Просто ничего не появляется.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы