Wordpress WordPres get_posts()未返回模板标记

Wordpress WordPres get_posts()未返回模板标记,wordpress,Wordpress,我想使用WordPressget_posts功能获取最新的5篇帖子。我做了以下工作: 在functions.php文件中,我添加了extra.php文件,其中包含以下代码: if( !function_exists( 'evertstrap_post' ) ) { function evertstrap_post() { $args = array( 'post_type' => 'post', 'numberposts'

我想使用WordPress
get_posts
功能获取最新的5篇帖子。我做了以下工作:

functions.php文件中,我添加了extra.php文件,其中包含以下代码:

if( !function_exists( 'evertstrap_post' ) ) {
function evertstrap_post() {

        $args  = array(
            'post_type' => 'post',
            'numberposts' => 5,
        );

        $recent_posts = get_posts( $args );

        foreach ( $recent_posts as $post ) {
            setup_postdata( $post );
            echo get_the_title();
            echo '<br/>';
        }
        wp_reset_postdata();

    }
}
如果(!function_存在('evertstrap_post')){
函数evertstrap_post(){
$args=数组(
“post_type”=>“post”,
“numberposts”=>5,
);
$recent_posts=获取_posts($args);
foreach(最近发布的职位为$post){
设置_postdata($post);
echo获取标题();
回声“
”; } wp_reset_postdata(); } }
现在,从home.php文件中,我正在调用
evertstrap\u post()
但它没有得到最新的5篇帖子

但是

如果我直接将代码放入index.php文件中,那么它就正常工作了


我怎么才能解决它呢?

我有时在WordPress中看到过这种情况,在WordPress中,
echo
ing输出是不利的。你能试一试吗

如果(!function_存在('evertstrap_post')){
函数evertstrap_post(){
全球$员额;
$args=数组(
“post_type”=>“post”,
“numberposts”=>5,
);
$recent_posts=获取_posts($args);
$output='';
foreach(最近发布的职位为$post){
设置_postdata($post);
$output.=获取标题();
$output.='
'; } wp_reset_postdata(); 返回$output; } }
然后在
home.php
中,您可以执行以下操作:


试试这个:

if( !function_exists( 'evertstrap_post' ) ) {
    function evertstrap_post() {

            $args  = array(
                'post_type' => 'post',
                'numberposts' => 5,
            );

            $recent_posts = get_posts( $args );

            foreach ( $recent_posts as $post ) {
                setup_postdata( $post );
                echo get_the_title($post->ID);
                echo '<br/>';
            }
            wp_reset_postdata();

        }
    }
如果(!function_存在('evertstrap_post')){
函数evertstrap_post(){
$args=数组(
“post_type”=>“post”,
“numberposts”=>5,
);
$recent_posts=获取_posts($args);
foreach(最近发布的职位为$post){
设置_postdata($post);
echo获取标题($post->ID);
回声“
”; } wp_reset_postdata(); } }
  • 因为get_title()是“while post:do post”wordpress循环中使用的模板标记,所以您只看到了最后一篇文章的标题5次。但是,同一函数接受具有post ID的参数。更多信息:
  • 通过函数get_posts()获取post您可以将post OBEJCT存储在一个数组中,并使用普通的foreach循环,您可以在该循环中使用
    $post->key_name
    检索对象数据
  • 我还推荐wordpress codex。它有很好的记录
    您是否尝试过在
    evertstrap\u post
    中返回输出,然后在
    home.php
    中返回
    echo evertstrap\u post()。不是5个不同的职位都不走运。同一篇文章5次。@creativeartbd你能试试我的最新编辑吗?我看到一些文档说循环后需要
    全局$post
    。@creativeartbd真棒!我相信,由于您没有在全球范围内获得
    $post
    获取标题()
    不知道从哪个帖子获取。这就是为什么你看到同一个帖子被显示了5次。