我已在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]; ?>
我根本没有回头路。
有谁知道为什么这不起作用?它在单个帖子模板中工作正常,为什么不在循环中?
谢谢!
答案 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)
似乎问题在于数据库。我注意到,如果我删除了某些帖子,那么它会开始正常工作。我还没有找到这些帖子的错误,如果我删除它们然后重新创建它们,它们通常都很好。
对于遇到此问题的任何人,我的建议是尝试将部分帖子移至垃圾箱,看看它是否开始有效。