2011-06-12 133 views
1

我有一個模板文件(trendingPosts.php),用於顯示2個標籤爲「趨勢」的最新帖子。在顯示這兩個職位while循環,我把他們的ID在一個數組,所以我可以從主WordPress的循環後其排除:獲取從一個wordpress模板文件到另一個變量

<div id="trendingWrap" class="clearfix"> 

<?php 
$trending = new WP_Query(); 
$trending->query("showposts=2&tag=trending"); 
while($trending->have_posts()) : $trending->the_post(); 
$wp_query->in_the_loop = true; 
$currentTrending[] = $post->ID; 
?> 

    <div class="trendingStory"> 
     <h2 class="trendingTitle"><a href="<?php the_permalink(); ?>" alt="<?php the_title_attribute(); ?>"><?php the_title(); ?></a></h2> 
    </div><!-- end trendingStory --> 

<?php endwhile; ?> 

</div><!-- end trendingWrap --> 

的問題是,我有其中的index.php我包括loop.php通過get_template_part('loop', 'index');和我無法得到$currentTrending[]陣列,我在trendingPosts.php我需要得到該數組在我loop.php

而且,在我的loop.php,我不包括以下列方式將2個職位。

if(have_posts()): while(have_posts()) : the_post(); 
    if($post->ID == $currentTrending[0] || $post->ID == $currentTrending[1]) continue; 

這是排除帖子的正確方法嗎?如果有人有更好的方式來做這件事。請告訴我。 當然,沒有什麼工作,直到我設法得到loop.php這個數組,因此這是主要問題。

謝謝!我感謝所有的幫助。

+0

非常感謝您的回覆,但下面的方法對我的工作幾乎沒有改變我的代碼。 – Aayush 2011-06-12 16:38:23

+0

你應該把這個評論放在其他答案之下;)並且投票總是表達感謝的一種很好的形式(小提示)。 – hakre 2011-06-12 16:45:23

回答

1

通過使用$GLOBALSsuperglobal數組,您可以輕鬆創建可隨處訪問的變量。

一旦設置

$GLOBALS['mytheme_thisismyvar'] = 22; 

然後,您可以everwhere訪問它在其他模板:

$myvar = $GLOBALS['mytheme_thisismyvar']; 

而且它適合使用它。這適用於子模板,無論它們如何加載。

因爲整個程序共享這個超全局數組,請注意不要覆蓋現有的值。

+0

太棒了!這有效......最好的部分:我不必改變我的代碼。 – Aayush 2011-06-12 16:36:38

1

嘗試將當前的趨勢代碼移動到主題的functions.php,以便您可以隨時調用它。

function getCurrentTrending() { 
    $trending = new WP_Query(); 
    $trending->query("showposts=2&tag=trending"); 
    while($trending->have_posts()) : $trending->the_post(); 
    $wp_query->in_the_loop = true; 
    $currentTrending[] = $post->ID; 
    endwhile; 
    return $currentTrending; 
} 

然後,您可以獲取任何模板文件數組:

$currentTrending = getCurrentTrending(); 

希望有所幫助。

相關問題