返回短代码wordpress

时间:2013-11-11 20:06:03

标签: php wordpress

我有这段代码用于显示短代码。

<?php

function recent_posts_function() {


    $mypost = array( 'post_type' => 'gallery_pictures', );
    $loop = new WP_Query( $mypost );
    ?>

<div id="boxhover">

    <?php while ( $loop->have_posts() ) : $loop->the_post();?>

    <?php $image = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), 'single-post-thumbnail' ); ?>

    <!--Fade-->
    <?php $ddd = '<div class="mosaic-block fade">
        <a href="'. $image[0] . '" data-fancybox-group="gallery" target="_blank" class="mosaic-overlay preview fancybox" title="' . the_title . '">
            <div class="details">
                <h4>' . the_title() . '</h4>
                <p>' . the_content_rss('', TRUE, '', 30) . '</p>
                <br/>
                <div class="btt">VIEW</div>
            </div>
        </a>
        <div class="mosaic-backdrop"><img src="' . $image[0] . '"     alt="gallery thumbnail" /></div>
    </div>';

   endwhile; ?>

</div>
<?php


return $ddd;
} 

function register_shortcodes(){
add_shortcode('gallery', 'recent_posts_function');
}

add_action( 'init', 'register_shortcodes');

从上面的代码中可以看出,'return $ ddd'应该返回'while'进程完成的循环的所有输出,但它只显示一个。

我目前正在寻找解决方案,并希望听到有关如何做的任何建议,建议和想法。提前谢谢。

1 个答案:

答案 0 :(得分:1)

你需要在循环= [等于]之前添加[dot] 这将导致每个循环添加内容与前一个。

<?php function recent_posts_function() { 
        $ddd = ''; //First declare the string var ?>
...
<?php while ( $loop->have_posts() ) : $loop->the_post();?>

  <?php $ddd .= '<div class="mosaic-block fade">'; // Put a [dot] before sign symbol ?>

<?php endwhile; ?>
...
return $ddd;
...
<? php } ?>