If else with shortcodes

时间:2012-07-04 作者:TheBetterJORT

如果自定义字段值为true,我只希望显示其中一个短代码。我不理解这样做的逻辑。所以基本上,如果有twitch视频和自己的3D视频,我只想显示顶部的视频(twitch)。等等等等。这是否超出了if-else语句?我正在将此代码添加到我的模板中。php文件。

我的第二个问题是,使用switch方法会更好吗?

<?php
$twitch = get_post_meta( $post->ID, \'twitch\', $single = true );
$own3d = get_post_meta( $post->ID, \'own3d\', $single = true );
$livestream = get_post_meta( $post->ID, \'livestream\', $single = true );
$ustream = get_post_meta( $post->ID, \'ustream\', $single = true );
$justin = get_post_meta( $post->ID, \'justin\', $single = true );


if ($twitch == \'\') {
}
else { 
echo do_shortcode(\'[livestream type="twitch" channel="\' . $twitch . \'"]\');
}

if ($own3d == \'\') {
}
else { 
echo do_shortcode(\'[livestream type="own3d" channel="\' . $own3d . \'"]\');
}
if ($livestream == \'\') {
}
else{echo do\\u短代码(\'[livestream type=“livestream”channel=“..livestream.”]);}

if ($ustream == \'\') {
}
else {
echo do_shortcode(\'[livestream type="ustream" channel="\' . $ustream . \'"]\');
}

if ($justin == \'\') {
}
else {
echo do_shortcode(\'[livestream type="justin" channel="\' . $justin . \'"]\');
}
?>

1 个回复
最合适的回答,由SO网友:fuxia 整理而成

这是一个相当简单的PHP问题,几乎离题了。您可以大大简化代码:

$metas = array ( \'twitch\', \'own3d\', \'livestream\', \'ustream\', \'justin\' );
foreach ( $metas as $meta )
{
    $value = get_post_meta( $post->ID, $meta, TRUE );
    if ( $value )
    {
        echo do_shortcode("[livestream type=\'$meta\' channel=\'$value\']");
        break;
    }
}
这将遍历可能的元字段列表,如果找到包含内容的元字段,则停止。

我不会用do_shortcode() 像这样。改为使用短代码处理程序函数(此短代码调用的函数)来加快处理速度
使用do_shortcode() 仅当您的内容位于短代码的外部时。

结束

相关推荐

the_excerpt and shortcodes

我正在使用索引页上的\\u摘录。我还在我的每一篇文章的开头使用dropcap快捷码。在索引页面上,帖子不会显示周围带有dropcap快捷码的信件。如果我的帖子中有“Dog”一词,索引页会显示“og”。在使用\\u摘录时,如何使用短代码?短代码 function drcap ($atts, $content = null) { return \'<div class=\"dropcap\">\' . do_shortcode($content) . \'</div&g