三元语句和do_shortcode

时间:2014-12-08 13:32:47

标签: php wordpress ternary

我正在尝试使用wordpress主题来显示主页特色区域中的插件短代码的输出,该区域当前似乎只是从选项设置中提取文本字符串。 我已经修改了features.php文件,如下所示:

<?php global $option_setting;
    $display_features = false;
    $meta = get_post_meta( get_the_ID(), 'enable-features',true );
    if (isset($option_setting['features-enable']['enabled'])) :
    $enabled = $option_setting['features-enable']['enabled'];

if (((isset($enabled['blog']) ) && is_home() ) 
|| ((isset($enabled['staticpage'])) && is_front_page())
|| ((isset($enabled['posts'])) && is_single())
|| ((isset($enabled['archives'])) && is_archive())
|| ($meta)
|| ((isset($enabled['pages'])) && is_page()))
{
    $display_features = true;
}

if ($display_features) :
    if ( count($option_setting['features-main']) > 0 ) : ?>

    <div id="features-area">
    <div class="container">
        <?php
          $i = 0; foreach ( $option_setting['features-main'] as $features ) {
                    echo "<div class='col-md-4 col-sm-4 feature$i'><figure><div><a href='".esc_url($features['url'])."'><img src='".$features['image']."'><div class='features-caption'><div class='features-caption-title'>".$features['title']."</div>",($i==1 ? "<div class='features-caption-desc'><?php echo do_shortcode('[qemcalendar]'); ?></div></div></a></div></figure></div>" : "<div class='features-caption-desc'>".$features['description']."</div></div></a></div></figure></div>";
            $i++;   }
           ?>
     </div>   
    </div><!--.features-->
<?php endif;
endif;
endif; ?>

我收到此错误:

Parse error: syntax error, unexpected ';' in /home/pennybro/public_html/dev/wp-content/themes/pbcc/features.php on line 24

第24行是回声,我想我对<?php echo do_shortcode('[qemcalendar]'); ?>所做的事情是完全错误的,但我正在努力找出我需要做的事情。

我从一个if else开始,但由于这是在回声内部,所以不是很开心。我意识到我可能会尝试做一些根本无法奏效的事情,但所有的想法都会受到赞赏!

谢谢,

莉莎

2 个答案:

答案 0 :(得分:0)

您的文字中存在语法错误:

这真的很长很糟糕。使用此:

echo "<div class='col-md-4 col-sm-4 feature".$i."'>"
    . "<figure>"
    . "<div>"
    . "<a href='".esc_url($features['url'])."'>"
    . "<img src='".$features['image']."'>"
    . "<div class='features-caption'>"
    . "<div class='features-caption-title'>".$features['title']."</div>";
    if ($i==1) { echo "<div class='features-caption-desc'>" . do_shortcode('[qemcalendar]')
    . "</div>"
    . "</div>"
    . "</a>"
    . "</div>"
    . "</figure>"
    . "</div>";
    } else { 
        "<div class='features-caption-desc'>".$features['description']."</div></div></a></div></figure></div>";
    }

但我认为,这更具可读性:

<div class='col-md-4 col-sm-4 feature<?php echo $i; ?>'>
    <figure>
        <div>
            <a href='<?php echo esc_url($features['url']); ?>'>
                <img src='<?php echo $features['image']; ?>'>
                <div class='features-caption'>
                    <div class='features-caption-title'><?php echo $features['title']; ?></div>
                    <?php
                    if ($i == 1) {
                        ?>
                        <div class='features-caption-desc'><?php do_shortcode('[qemcalendar]'); ?></div>
                        <?php
                    } else {
                        ?>
                        <div class='features-caption-desc'><?php echo $features['description']; ?></div>
                        <?php
                    }
                    ?>
                </div>
            </a>
        </div>
    </figure>
</div>

答案 1 :(得分:0)

我认为你的问题是双重回声。

你回应三元语句(因为你使用逗号这一事实)但是你回应了这个

<?php echo do_shortcode('[qemcalendar]'); ?>

我认为

. do_shortcode('[qemcalendar]') .

或保持一致:

, do_shortcode('[qemcalendar]'),

就足够了。