2016-03-15 65 views
0

当我试图在同一页面上显示不同的自定义帖子和高级自定义字段时,我对理解(我的)PHP正在做什么存在一些小问题。显示高级自定义字段的内容

我已将不同的高级自定义字段添加到页面,并且我尝试使用该模板显示自定义帖子。

我使用的是打电话给我的自定义字段整个模板:

<?php 
    $args = array(
    'post_type' => ‘foo’ 
); 

$foo = new WP_Query($args); 
if($foo->have_posts()) { 

while($foo->have_posts()) { 
    $foo->the_post(); 
?> 
    <?php the_content() ?>      
<?php 
    } 
} 
else { 
    // SOME MESSAGE 
} 
?> 

的:

<?php the_field(‘field-name’) ?> 

我的自定义信息通过这样的循环(围绕模板的中间位置)被称为高级自定义字段的内容在这些循环之上显示得很好。在循环下方,它只是不显示。

我不明白为什么内容没有显示出来。

我认为它必须处理循环的while或if语句。如果我删除循环,则会显示下面任何高级自定义字段的内容。

回答

2

当您使用WP_Query()时,每次循环发布时都会更改页面上的默认$post变量。你需要在你的循环之后调用wp_reset_postdata()来重置$post变量,以便它再次对应于当前页面。您可以在'while'循环后调用该函数 -

<?php 
$args = array(
    'post_type' => ‘foo’ 
); 
$foo = new WP_Query($args); 

if($foo->have_posts()) { 

    while($foo->have_posts()) { $foo->the_post(); 

     the_content();      

    } wp_reset_postdata(); 
} 
else { 
    // SOME MESSAGE 
} 
?> 
+0

非常感谢!这就说得通了! –

相关问题