从一个wordpress模板文件获取变量到另一个

时间:2011-06-12 13:49:40

标签: php wordpress-theming wordpress

我有一个模板文件( trendingPosts.php ),用于显示标签为'trending'的2个最新帖子。在用于显示这两个帖子的while循环中,我将它们的ID放在一个数组中,以便我可以在以后将它们从主要的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 ,其中我通过get_template_part( 'loop', 'index' );包含了 loop.php ,我无法获得{{ 1}}我在 trendingPosts.php 中创建的数组。 我需要在 loop.php

中获取该数组

此外,在我的 loop.php 中,我按以下方式排除了2个帖子。

$currentTrending[]

这是排除帖子的正确方法吗?如果有人有更好的办法做这整件事。请告诉我。 当然,在我设法在 loop.php 中获取该数组之前没有任何作用,因此这是主要问题。

谢谢!我感谢所有的帮助。

2 个答案:

答案 0 :(得分: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();

希望有所帮助。

答案 1 :(得分:1)

您可以使用$GLOBALS superglobal数组轻松创建可以随处访问的变量。

设置后

$GLOBALS['mytheme_thisismyvar'] = 22;

然后,您可以在其他模板中随处访问它:

$myvar = $GLOBALS['mytheme_thisismyvar'];

并在适合的地方使用它。这适用于子模板,无论它们如何加载。

因为整个程序共享这个超全局数组,所以请注意不要覆盖现有值。