我有一个短代码,在$输出字段中有HTML,这很可爱。我只想在它的底部添加一段话,这是以这句话为条件的:
<?php if ( get_post_meta( get_the_ID(), \'campus\', true ) ) : ?>
我不太清楚如何将这样的语句格式化(如果可能的话)到现有的$输出字段中。
下面是$输出目前的样子,我想在第8行添加这个条件,基本上还有另一个段落标记,其中包含一些内容,只有在语句为true时才会显示:
\'<div class="w-blog-entry" style="padding:0;">
<div class="w-blog-entry-h">
<div class="l-subsection color_dark" style="background-image: url(\'.$the_thumbnail.\'); background-position: center center; padding-top:0; padding-bottom:0; background-attachment: inherit;">
<div class="l-subsection-h">
<div class="l-subsection-hh g-html i-cf" style="font-family:Century Gothic; text-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);">
<a class="w-blog-entry-link" href="\'.get_permalink(get_the_ID()).\'"><h2 class="w-blog-entry-title" style="line-height:1em; margin-left:0; padding-left:4px; font-size:20px;"><span class="w-blog-entry-title-h" style="color:#fff;">\'.get_post_meta( get_the_ID(), \'destination\', true ).\'<br><span style="font-size:0.6em; color:#f2f2f2;">\'.get_post_meta( get_the_ID(), \'depart\', true ).\' <span style="text-transform: lowercase; font-size:0.8em;">to</span> \'.get_post_meta( get_the_ID(), \'return\', true ).\'</span></span></h2></a>
<p style="line-height:1.2em; padding-left:4px; font-size:0.9em;">\'.get_post_meta( get_the_ID(), \'projectdesc\', true ).\'</p>
</div>
</div>
</div>
</div>\';
}
$output .= \'</div>
</div>
</div>\'
这是可能的,还是我必须对具有两个输出的短码设置一个完整的其他条件?
如果您需要更多的短码上下文,请告诉我,如果我的原始目标是可能的,我只是不想浪费太多空间。
最合适的回答,由SO网友:Peter Rigby 整理而成
如果我没听错,你只想用“?”if语句类型:
$output = \'<div class="w-blog-entry" style="padding:0;">
<div class="w-blog-entry-h">
<div class="l-subsection color_dark" style="background-image: url(\'.$the_thumbnail.\'); background-position: center center; padding-top:0; padding-bottom:0; background-attachment: inherit;">
<div class="l-subsection-h">
<div class="l-subsection-hh g-html i-cf" style="font-family:Century Gothic; text-shadow: 0px 2px 2px rgba(0, 0, 0, 0.3);">
<a class="w-blog-entry-link" href="\'.get_permalink(get_the_ID()).\'"><h2 class="w-blog-entry-title" style="line-height:1em; margin-left:0; padding-left:4px; font-size:20px;"><span class="w-blog-entry-title-h" style="color:#fff;">\'.get_post_meta( get_the_ID(), \'destination\', true ).\'<br><span style="font-size:0.6em; color:#f2f2f2;">\'.get_post_meta( get_the_ID(), \'depart\', true ).\' <span style="text-transform: lowercase; font-size:0.8em;">to</span> \'.get_post_meta( get_the_ID(), \'return\', true ).\'</span></span></h2></a>
<p style="line-height:1.2em; padding-left:4px; font-size:0.9em;">\'.get_post_meta( get_the_ID(), \'projectdesc\', true ).\'</p>\';
$output .= get_post_meta( get_the_ID(), \'campus\', true ) ? \'<p>True so do this paragraph</p>\' : \'<p>false, so do this instead</p>\';
$output.=\' </div>
</div>
</div>
</div>\';
如果有其他的标准也可以,所以我不确定混淆在哪里。
另一种方法是使用php输出缓冲区,其工作方式如下:
ob_start();
?>
<div class="w-blog-entry" style="padding:0;"> etc etc
<?php if(get_post_meta( get_the_ID(), \'campus\', true )) {?>
<p>True paragraph</p>
<?php }else{ ?>
<p>false paragraph</p>
<?php } ?>
完成所有输出后,将其放入$输出变量中,如下所示:
$output = ob_get_clean();
当您启动输出缓冲区时,基本上意味着您在PHP标记之外放置的任何HTML都会进入缓冲区,而不是输出到浏览器。当输出中有很多不同的条件和逻辑时,我更喜欢这样。
ob_start, ob_get_clean