2012-05-02 7 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()関数の開始時に

ob_start(); 

と出力バッファを開始すると最後に、このバッファを閉じて

return ob_get_clean(); 

にその内容を返しますあなたはWPのショート

PHP information on Output Buffering Functions

の場合には何をしたいのかである、すぐにそれをエコーより
+1

これは本当に例外的です。あなたの助けとそのリンクをありがとう! – user1368968

+0

それは2014年で、2年後にあなたの返信は私を保存:)ありがとう! –

+0

それは私のために働く。 ありがとう –

-1

私はこのショートコードを持っており、ページの内容の終わりに(ワードプレスで)ショートコードを置いても、常にページの先頭に表示されます。

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'); 
関連する問題