如何在 PHP 中围绕短代码(Echo'd)添加 IF 语句?(隐藏/显示选项卡)

Red*_*all 0 php wordpress tabs if-statement conditional-statements

我使用以下短代码将一组选项卡插入到我的 php WordPress 模板中

    <?php echo do_shortcode('[tabs style="boxed"]
            [tab title="1"][some content here][/tab]
            [tab title="2"]' . get_the_excerpt() . '[/tab]
            [/tabs]');  ?>
Run Code Online (Sandbox Code Playgroud)

这很好用。

我在自定义帖子中创建了 2 个名为“tab_contact_1”和“tab_contact_2”的自定义复选框字段。

我想向选项卡添加条件逻辑,以便如果复选框为 true/选中,选项卡就会显示。如果没有它就隐藏起来。(这是因为有些帖子有此内容,有些则没有)

我对网站上的其他自定义字段有类似的逻辑,但不使用选项卡,并且认为我可以应用相同的思维方式。我尝试了代码(见下文),但页面未加载。我做错了什么但无法弄清楚。希望得到一些指导。

多谢

<?php echo do_shortcode('[tabs style="boxed"]
' . if ( get_post_meta($post->ID, 'tab_contact_1', true)) { . '
[tab title="1"][some content here][/tab]
'. } .'
' . if ( get_post_meta($post->ID, 'tab_contact_2', true)) { . '
[tab title="2"]' . get_the_excerpt() . '[/tab]
'. } .'
[/tabs]');  ?>
Run Code Online (Sandbox Code Playgroud)

Peo*_*eon 5

好的做法不是echo单行,而是将它们存储在变量中并回显最终代码,如下所示:

<?php

$result = '';

$result .= '[tabs style="boxed"]';
if ( get_post_meta( $post->ID, 'tab_contact_1', true ) != 'false' ) {
    $result .= '[tab title="1"][some content here][/tab]';
}
if ( get_post_meta( $post->ID, 'tab_contact_2', true ) != 'false' ) {
    $result .= '[tab title="2"]' . get_the_excerpt() . '[/tab]';
}
$result .= '[/tabs]';

echo do_shortcode( $result );

?>
Run Code Online (Sandbox Code Playgroud)