为什么get_post_custom()在WordPress的循环中不起作用?

时间:2012-03-10 17:41:30

标签: wordpress

我已在WordPress中创建了自定义帖子类型,在单个帖子模板中,我使用get_post_custom()函数成功提取了自定义数据。

但是在帖子列表的The Loop中,该功能不起作用,并返回一个空数组。

以下是我所拥有的:

<?php $loop = new WP_Query( array( 'post_type' => 'web-design', 'posts_per_page' => 10 ) ); ?>

<?php $i = 0; ?>

<?php while ( $loop->have_posts() && $i < 3 ) { $loop->the_post(); ?>

<article class="project-link <?php echo 'num' . $i ?>">
    <div class="pad">

        <?php $project_info =  get_post_custom(); ?>

        <?php 

        foreach ($project_info as $i => $values) {
            print "$i {\n";
            foreach ($values as $key => $value) {
                print "$key => $value\n";
            }
            print "}\n";
        }

        ?>      

        <?php echo $project_info['url'][0]; ?>  

我根本没有回头路。

有谁知道为什么这不起作用?它在单个帖子模板中工作正常,为什么不在循环中?

谢谢!

2 个答案:

答案 0 :(得分:0)

post_custom()有很多变量存储在数组中。

如果你知道你需要的特定密钥或值,你可以使用

或者像这样通过它们:

<?php

  $mykey_values = get_post_custom_values('my_key');
  foreach ( $mykey_values as $key => $value ) {
    echo "$key  => $value ('my_key')<br />"; 
  }

?>

或特定帖子

<?php

  $custom_fields = get_post_custom(72);
  $my_custom_field = $custom_fields['my_custom_field'];
  foreach ( $my_custom_field as $key => $value )
    echo $key . " => " . $value . "<br />";

?>

答案 1 :(得分:0)

似乎问题在于数据库。我注意到,如果我删除了某些帖子,那么它会开始正常工作。我还没有找到这些帖子的错误,如果我删除它们然后重新创建它们,它们通常都很好。

对于遇到此问题的任何人,我的建议是尝试将部分帖子移至垃圾箱,看看它是否开始有效。