0

我有此代码用于显示简码。

<?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”过程完成的循环的所有输出,但它只显示一个。

我目前正在寻找解决方案,并且很想听听有关如何做到这一点的任何建议、建议和想法。预先感谢。

4

1 回答 1

1

您需要在循环 while 的 = [equal] 之前添加一个 [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 } ?>
于 2013-11-11T20:52:07.347 回答