SETUP_POSTData未返回任何值

时间:2016-01-16 作者:ravravrav

我正在使用ACF创建一个名为facilities. 在该字段中有一个称为facility. 因此,每个商店都有“设施”,其中包含许多“设施”。

我所做的是在我的每个商店中循环,获取“设施”,循环其中的每个“设施”,并显示它。

Here is a reference 我正在使用的代码。

我的代码:

if( get_field( \'facilities\' ) ):

    //print_r( get_field(\'facilities\')  );
    $post_objects1 = get_field(\'facilities\');

    if( $post_objects1 ):

        foreach( $post_objects1 as $post ): // variable must be called $post (IMPORTANT)
            setup_postdata($post); 
            print_r($post);
            ?>
            <h1><a href="<?php the_permalink(); ?>">Title is <?php echo the_title(); ?></a></h1>
            <?
        endforeach; 
        wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly 

    endif;

endif;
不幸的是,模板标记不起作用,它们只是空白的。

我看了一下setup_postdata 页面上写着使用global $post;, 所以我做到了,但还是没有运气。

我试过了print_r $post 我得到以下信息:

数组([设施]=>WP\\U Post对象([ID]=>1244[Post\\U作者]=>2[Post\\U日期]=>2015-12-28 14:48:55[Post\\U日期\\U gmt]=>2015-12-28 14:48:55[Post\\U内容]=>[Post\\U标题]=>停车[Post\\U摘录]=>[Post\\U状态]=>发布[评论\\U状态]=>关闭[ping\\U状态]=>关闭[Post\\U密码]=>[Post\\U名称]=>停车[至ping编辑]=>[修改后]=>2015-12-28 14:48:55[post\\u modified\\u gmt]=>2015-12-28 14:48:55[post\\u content\\u filtered]=>[post\\u parent]=>0[guid]=>http://xxx/~xxx/xxx/?post_type=facility&p=1244 [菜单\\u顺序]=>0[发布类型]=>工具[发布mime\\u类型]=>[注释计数]=>0[过滤器]=>原始)

所以$post 包含正确的数据。

然而,为什么是the_title();, 等等,不工作?

1 个回复
SO网友:Mark Kaplun

为了使模板标记工作global $post变量需要正确设置,您的$post可能是循环或文件的本地变量。

放在循环之前的某个地方global $post

但实际上,不要这样做,您在那里使用的所有函数都可以接受post对象或post id作为参数,并且不需要使用全局变量。类似于

foreach( $post_objects1 as $p): 
 ?>
 <h1><a href="<?php echo get_permalink($p->ID); ?>">Title is <?php echo get_the_title($p->ID); ?></a></h1>
 <?
endforeach;

相关推荐