2012-02-22 3 views
0

wordpressプラグインでループすることはできますか?ループはプラグイン内で動作しません

私はイベントの私のカスタムポストタイプのポストについてのいくつかの情報をつかむためにwordpressのループを利用して、このプラグインを作成しました:

function getEventsFeed() { 
    $args = array('post_type' => 'events'); 
    $loop = new WP_Query($args); 
    $htmlOutput = '<h2>Events</h2>'; 
    while ($loop->have_posts()) : $loop->the_post(); 
     $date = get_post_meta($post->ID, 'events_0'); 
     $location = get_post_meta($post->ID, 'events_9'); 
     $htmlOutput .= '<tr><td>' . the_title() . '</td><td>' . $date[0] . '</td><td><a href="' . get_bloginfo('url') . '/event/?id='. $post->ID . '">' . $post->post_title .'</a></td><td>' .   $location[0] . '</td></tr>'; 
     endwhile; 
     $htmlOutput .= '</div>'; 
     echo $htmlOutput; 
    } 

問題はthe_title情報が返されているです。 $ post-> IDと$ post-> post_titleが返されないように、$ postはループ内で動作していません。私は別のページテンプレートでこの正確なコードを使用しており、すべてのデータを正しく返します。私はプラグインでそれを使うときになぜ戻ってこないのか分かりません。

アイデア?あなたの関数の先頭に

global $post; 

を追加

答えて

3

してみてください。 $ loop-> the_post()はグローバル$ post変数を設定しますが、関数スコープ内では使用できません。

+0

はい!それは確かにそれを修正しました。どうもありがとう。しかし確かになぜか! –

+0

グローバル変数スコープとローカル変数スコープに関するいくつかのコンテキストについては、これを調べてください:http://www.php.net/manual/en/language.variables.scope.php#language.variables.scope.global –

関連する問題