нужна помощь php
Мне нужно добавить оператор if внутри тега html
if( get_field($image) ): ?><img src="<?php the_field($image); ?>" alt="" /><?php endif;
Я хочу добавить утверждение if внутри тега html ниже вместо img и a, возможно ли это?
echo "<$html class=\"" .(!empty($this->options['class']) ? trim($thesis->api->esc($this->options['class'])) : ''). "\"> // I want this if statement to work inside here...how do i escape the html to make it work? if( get_field($image) ): ?><img src="<?php the_field($image); ?>" alt="" /><?php endif; <img src=\"" .get_field($image)."\" alt=\"\" /> <a href=\"".get_field($download). "\"> Download File</a> </$html>\n";
Во-первых, не используйте инструкцию echo
чтобы выплескивать огромные куски HTML, поэтому код очень сложно поддерживать и повторно использовать. Разве это не так?
<a href='<?php echo $some_variable; ?>'>
Использование PHP-логики в блоках HTML (общее)
Вы ищете что-то вроде этого:
<?php if(!empty($image)): ?> <img src='<?php echo $image; ?>' alt='Some Stuff'> <?php endif; ?>
Это короткодействующий эквивалент, называемый тернарным оператором, который может быть легче читать в коде:
<?php echo empty($image) ? null : "<img src='$image' alt='Some Stuff'>"; ?>
Это будет отражать тег изображения, если $image
имеет значение, и ничего, если это не так.
Ваш код выглядит так, будто он намеренно запутался, чтобы запутать людей. Научитесь отступать, не вставляйте логику в логику. Приоритет читаемости, и ваш код будет намного проще в обслуживании.
if(!empty($text)) echo "<$html class=\"" .(!empty($this->options['class']) ? trim($thesis->api->esc($this->options['class'])) : ''). "\"> <img src=\"" .get_field($image)."\" alt=\"\" /> " .get_field($text)." <a href=\"".get_field($download). "\"> Download File</a> </$html>\n";
Здесь многое можно улучшить. Прежде всего, отделить логику от логики вывода как можно больше:
Бизнес-логика
<?php // This should be in another FILE ideally... $this->divClass = empty($this->options['class']) ? null : trim($thesis->api->esc($this->options['class'])); $this->image = the_field($image); $this->download = the_field($download); $this->text = // I dont know how you're setting this. ?>
Логика отображения
Затем потеряйте функции get_field
, добавьте null
возврат в the_field
если он не найден, так что у вас есть более чистый код. Тогда просто используйте что-то вроде этого:
<?php if(!isset($this->text)): ?> <div class='<?php echo $divClass; ?>'> <?php if(!isset($this->image) && !isset($this->download)): ?> <img src='<?php echo $this->image; ?>'> <a href='<?php echo $this->download; ?>'>Download File</a> <?php endif; ?> </div> <?php endif; ?>
Теги <?php>
помогут вам, они позволят вам чисто интерполировать PHP-код с кодом HTML так, чтобы большинство языков приходилось прибегать к уродливым внешним tempating. Используйте их, сохраняйте свой код читабельным и понятным, не используйте ярлыки, потому что они вернутся, чтобы укусить вас.