为什么不能在侧边栏中使用SETUP_POSTData($POST)?

时间:2012-10-22 作者:Claire

我创建了一个函数,它采用一个参数-post type,并将输出每个帖子,其中包含一些html、标题、内容等。但是,我希望能够使用与$post, 尤其地the_excerpt. 然而,当我尝试在侧栏php小部件中使用我的函数时,它只输出主页的标题和内容,而不是自定义查询帖子信息。

如果我在页面中运行该函数,它运行得很好,并且会回显自定义查询的帖子详细信息。你可能会问我为什么不把它放在侧边栏里,它太乱了,我会在不同的自定义帖子中重用它,所以我想我应该写一个函数。

我的职能:

function myRecentPosts($postType){
     wp_reset_postdata();
       $args = array( \'post_type\' => $postType,\'posts_per_page\' => 3);
       $recentPosts = get_posts( $args );

       foreach($recentPosts as $post){
          setup_postdata($post);  ?>                  
        <article>
          <h1><?php the_title();?></h1>
          <?php the_excerpt();?>
        </article>

     <?php 
      }
   wp_reset_postdata();

}

2 个回复
最合适的回答,由SO网友:Tapefreak 整理而成

您的函数在页面模板中工作,但不在侧栏中工作,因为在处理模板时,$post已经包含为页面加载的帖子。

我尝试了你的代码,正如Michael所说,我只需要添加$post的全球声明inside the function, 并且它完全按照您的意图显示帖子:

function myRecentPosts($postType){
     wp_reset_postdata();
       $args = array( \'post_type\' => $postType,\'posts_per_page\' => 3);
       global $post; 
       $recentPosts = get_posts( $args );

       foreach($recentPosts as $post){
          setup_postdata($post);  ?>                  
        <article>
          <h1><?php the_title();?></h1>
          <?php the_excerpt();?>
        </article>

     <?php 
      }
   wp_reset_postdata();

}

SO网友:Michael

setup_postdata($post); 似乎需要$post 设置为全局变量:

http://codex.wordpress.org/Function_Reference/setup_postdata

结束

相关推荐

如何添加orderby参数用于分类.php排序

我在一个类别上。php页面,循环如下:<?php while ($wp_query->have_posts()) : $wp_query->the_post(); ?> 我通常会这样做一个自定义循环:<?php //Define the Loop $temp = $wp_query; $wp_query= null; $wp_query = new WP_Query(); $wp_query->q