在短代码中使用IF语句是破坏主题

时间:2012-08-25 22:32:01

标签: wordpress shortcode

我一直在设置一个带有多个选项的滑块短代码,这是一个标题,使用元数据为自定义帖子类型的滑块提供选项,如是否显示标题,标题文本等。基本上我在哪里使用< / p>

if ( $captionCheckbox !== '1') {

    endif;

$slider .= '</li>';

if和endif之间的所有内容都打破了主题,但我看不出原因,如果它有帮助,这里是整个短代码。

function ls_slider_shortcode( $atts, $content = null ) {

$slider = '<section id="slider" class="flexslider container clearfix">';

    $slider .= '<ul class="slides">';

        $sliderQuery = "post_type=slider";

        query_posts( $sliderQuery );


        if ( have_posts() ) : while ( have_posts() ) : the_post();

            $slideImage = get_the_post_thumbnail( $post->ID, 'slider');


            $slider .= '<li>';
                $slider .= $slideImage;

                $captionCheckbox = get_post_meta( get_the_id(), 'ls_show_slider_caption', true);
                $productCheckbox = get_post_meta( get_the_id(), 'ls_show_button_link', true);
                $position        = get_post_meta( get_the_id(), 'ls_caption_position', true);
                $heading         = get_post_meta( get_the_id(), 'ls_caption_heading', true);
                $text            = get_post_meta( get_the_id(), 'ls_caption_text', true);
                $productLink     = get_post_meta( get_the_id(), 'ls_project_link', true);

                    if ( $captionCheckbox !== '1' ) {

                        $slider .= '<div class="caption' . $position . '>';
                            $slider .= '<div class="body">';
                                $slider .= '<h2 class="caption-title">' . $heading . '</h2>';
                                $slider .= '<p>' . $text . '</p>';
                            $slider .= '</div>';

                            if ( $captionCheckbox !== '1' ) {
                                $slider .= '<a href="' . $productLink .'">View Project</a>';
                            }

                            endif;

                        $slider .= '</div>'
                    }

                    endif;

            $slider .= '</li>';

        endwhile; endif; wp_reset_query();

    $slider .= '</ul>';

$slider .= '</section>';

return $slider;


}

add_shortcode('slider', 'ls_slider_shortcode');

2 个答案:

答案 0 :(得分:0)

在此表单中,您需要 使用大括号或使用冒号打开要与endif关闭的块:

<?php if ( $captionCheckbox !== '1'): ?>

  // do stuff

<?php endif; ?>

如果你使用大括号,那么右大括号就足够了。

<?php if ( $captionCheckbox !== '1') { ?>

  // do stuff

<?php } ?>

答案 1 :(得分:0)

function ls_slider_shortcode( $atts, $content = null ) {

$slider = '<section id="slider" class="flexslider container clearfix">';

    $slider .= '<ul class="slides">';

        $sliderQuery = "post_type=slider";

        query_posts( $sliderQuery );


        if ( have_posts() ) : while ( have_posts() ) : the_post();

            $slideImage = get_the_post_thumbnail( $post->ID, 'slider');


            $slider .= '<li>';
                $slider .= $slideImage;

                $captionCheckbox = get_post_meta( get_the_id(), 'ls_show_slider_caption', true);
                $productCheckbox = get_post_meta( get_the_id(), 'ls_show_button_link', true);
                $position        = get_post_meta( get_the_id(), 'ls_caption_position', true);
                $heading         = get_post_meta( get_the_id(), 'ls_caption_heading', true);
                $text            = get_post_meta( get_the_id(), 'ls_caption_text', true);
                $productLink     = get_post_meta( get_the_id(), 'ls_project_link', true);

                    ?>

                    <?php if ( $captionCheckbox !== '1' ): ?>

                        <?php

                        $slider .= '<div class="caption' . $position . '>';
                            $slider .= '<div class="body">';
                                $slider .= '<h2 class="caption-title">' . $heading . '</h2>';
                                $slider .= '<p>' . $text . '</p>';
                            $slider .= '</div>';

                            ?>

                            <?php if ( $captionCheckbox !== '1' ): ?>
                                <?php $slider .= '<a href="' . $productLink .'">View Project</a>'; ?>
                            <?php endif; ?>



                        <?php endif; ?>

                        <?php

                        $slider .= '</div>'

                        ?>


                    <?php endif; ?>

                    <?php

            $slider .= '</li>';

        endwhile; endif; wp_reset_query();

    $slider .= '</ul>';

$slider .= '</section>';

return $slider;


}