2012-02-22 8 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 не работает в цикле, поэтому $ post-> ID и $ post-> post_title не возвращаются. Я использую этот точный код в другом шаблоне страницы, и он возвращает все данные правильно. Я не уверен, почему он не вернется, когда я использую его в плагине.

Любые идеи?

ответ

3

Попробуйте добавить

global $post; 

к началу вашей функции. $ loop-> the_post() установит глобальную переменную $ post, но она недоступна внутри области вашей функции.

+0

Да! Это действительно исправило это. Большое спасибо. Не знаю, почему! –

+0

Проверьте это в контексте контекста глобальной и локальной переменных: http://www.php.net/manual/en/language.variables.scope.php#language.variables.scope.global –

Смежные вопросы