我创建了一个函数,它采用一个参数-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();
}
最合适的回答,由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();
}