在echo do_shortcode()函数中使用php语句(WordPress)

时间:2015-05-18 13:23:59

标签: php wordpress echo shortcode

我一直在寻找解决方案,但无法以正确的方式实现这一点。

以下是我正在处理的页面:

http://indiaelder.sites.uofmhosting.net/health-topics/alzheimers-disease/

正如您所看到的,这是一个非常早期医疗页面的占位符。我有一个标签菜单列出(带有一些填充文字)一堆关于阿尔茨海默氏症的信息,按类别(症状,原因等)组织。

这可以通过以下方式在我的代码中实现:

<?php
/*This gets the shortcode code to open the tabs */
                echo do_shortcode('
                [su_tabs vertical="yes"]
                    [su_tab title="Symptoms"][acf field="symptoms"][/su_tab]
                    [su_tab title="Causes"][acf field="causes"][/su_tab]
                    [su_tab title="Prognosis"][acf field="prognosis"][/su_tab]
                    [su_tab title="Diagnosis"][acf field="diagnosis"][/su_tab]
                    [su_tab title="Treatment"][acf field="treatment"][/su_tab]
                    [su_tab title="Prevention"][acf field="prevention"][/su_tab]
                [/su_tabs]
                ');
                ?>

我想这样做,如果用户没有在后端的其中一个字段中输入任何信息,那么相应的行就不会出现。

所以,如果我有一个名为$症的变量,并且我将其设置为等于该字段的值,我认为它就像是

$symptoms = get_field('symptoms');

运行条件以查看它是否不是&#39;&#39;,然后不回显相应的行(在此示例中,[su_tab title =&#34; Symptoms&#34;] [acf field =&#34;症状&#34;] [/ su_tab]不会包含在echo语句中)。

到目前为止,我在这方面遇到了很多挑战。我的第一个想法是将短代码分成几部分,但这似乎打破了功能,所以我认为这一切都必须立刻得到回应。我觉得他们必须是一种方法来做到这一点,我已经看到了一些例子,但似乎没有什么似乎适用于我的特定情况。有没有人对我如何做到这一点有任何想法?

1 个答案:

答案 0 :(得分:0)

您是否在调用短代码之前尝试构建语句?像这样:

<?php
    $output = 'shortcode_snippet = "foo"';
     if ( $var2 ) {
         $output .= 'shortcode_snippet2 = "bar"';   
    }

    echo do_shortcode('[ '. $output .' ]');
?>

这样你就可以在调用短代码之前获得所有逻辑。