2012-05-02 44 views
8

我知道這可能是一個回報問題。所以我將內容分成了兩部分,一部分名爲thelist,另一部分是實際返回的函數。代碼遵循這個問題。短內碼出現在內容的頂部而不是我需要的地方

實際的短代碼的作品,除了內容出現在內容的其餘部分之前。我認爲now_include_post返回將修復它,但它不。任何人都可以幫忙嗎?

function thelist() { 
if (have_posts()) : while (have_posts()) : the_post(); 
?> 
     <div id="post-<?php the_ID(); ?>" <?php post_class('thumb'); ?>> 
      <a href="<?php the_permalink() ?>" class="thumb-link"> 
      <?php 
    if (!post_password_required()) { 
        if (has_post_thumbnail()) { 
         the_post_thumbnail(); 
        } 
       } else { 
        ?> 
        <img src="<?php bloginfo('template_url') ?>/img/locked.png" /> 
     <?php } ?> 
      </a> 
      <h2> 
       <a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a> 
      </h2> 
     </div> 
<?php /* end post */ ?> 
<?php 
    endwhile; 
    endif; 
    wp_reset_query(); 
    } 
    ?> 
    <?php 

function now_include_post($atts) { 
$thepostid = intval($atts[id]); 
query_posts("p=$thepostid"); 
$output .= thelist(); 
return $output; 
} 

回答

24

您希望返回所有文本,而不是在PHP轉義時輸出。

在你的thelist的start()函數開始

ob_start(); 

的輸出緩衝器那麼,在年底關閉這個緩衝區中,與

return ob_get_clean(); 

返回其內容,將返回的內容,而比直接回顯,這是你想要在WP短代碼的情況下做什麼

PHP information on Output Buffering Functions

+1

這真的很特別。非常感謝您的幫助和鏈接! – user1368968

+0

這是2014年和2年後,你的回覆救我:)謝謝! – 2014-04-02 11:01:19

+0

它適合我。 謝謝 –

-1

我有這個短代碼,它總是出現在頁面的頂部,即使我把短代碼放在頁面內容的末尾(在wordpress中),請提出任何建議。

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

extract(shortcode_atts(array('id' => ''), $atts)); 

global $post; 

    $args = array( 'name' => esc_attr($id), 
        'post_type' => 'services', 
        'posts_per_page' => '1' 

       ); 

    query_posts($args); 


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

<div class="services-tabs"> 
    <div class="board"> 


      <div class="idTabs"> 
       <div class="tabs-images"> 

         <ul> 

            <?php $postslist = get_posts('post_type=services&numberposts=6&order=DESC'); foreach ($postslist as $post) : setup_postdata($post); ?> 

               <li> 
                <a href="#<?php the_ID();?>"> 


                   <img src="<?php bloginfo('template_directory'); ?>/js/cache/timthumb.php?src=<?php $imgsrc = wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), "Full"); echo $imgsrc[0]; ?>&w=120&h=120"alt="<?php the_title(); ?>" class="footer-thumb" /> 

                   <div class="circle"> 
                    <p class="service-title"><?php the_title() ?></p> 
                   </div> 


                </a> 
               </li> 

            <?php endforeach; ?> 


         </ul> 
       </div> 
      </div> 


      <div class="inner" > 

        <?php $postslist = get_posts('post_type=services&numberposts=6&order=DESC'); foreach ($postslist as $post) : setup_postdata($post); ?> 

        <div class="result" id="<?php the_ID();?>"> 

         <?php the_content(); ?> 

        </div> 
        <?php endforeach; ?> 
      </div><!--inner--> 



</div><!--board--> 
</div> 
<?php 

endwhile; 

wp_reset_query(); 


return $output; 

} 

add_shortcode('services', 'ss_framework_services_sc'); 
相關問題