需要php帮助
我需要在html标签
中添加if语句if( get_field($image) ):
?><img src="<?php the_field($image); ?>" alt="" /><?php
endif;
我想在下面的html标签中添加if语句来代替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";
答案 0 :(得分:2)
首先,不要使用echo
语句吐出大量的HTML,这使得代码很难维护和重用。这不容易吗?
<a href='<?php echo $some_variable; ?>'>
在HTML块中使用PHP逻辑(常规)
你正在寻找这样的东西:
<?php if(!empty($image)): ?>
<img src='<?php echo $image; ?>' alt='Some Stuff'>
<?php endif; ?>
这是一个名为ternary operator的简称等效词,可能更容易在代码中阅读:
<?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>
标签可以帮助您,它们允许您使用HTML代码干净地插入PHP代码,大多数语言都必须采用丑陋的外部诱惑。使用它们,保持代码的可读性和易懂性,不要走捷径,因为它们会回来咬你。