出于某种原因,我无法让WP_Query返回帖子的自定义字段值。我可以使用get_the_post_thumbnail($post->ID, array(50,50))
获取帖子缩略图,但我无法使用get_post_meta($post->ID, $key, true)
获取自定义字段数据。
我正在尝试做的精简版:
<?php
$keys = array('Show Date','Birth Year','Origin');
echo '<table>';
echo '<tr><th>Title</th>';
foreach( $keys as $key ) {
echo '<th>' . $key . '<th>';
}
echo '</tr>';
$myquery = new WP_Query( 'post_type=post' );
if( $myquery->have_posts() ) : while( $myquery->have_posts() ) : $myquery->the_post();
$title = get_the_title();
echo '<tr><td>' . $title . '</td>';
$values = array();
foreach( $keys as $key ) {
$values[] = get_post_meta($post->ID, $key, true);
}
foreach( $values as $value ) {
echo '<td>';
echo $value;
echo '</td>';
}
echo '</tr>';
endwhile; endif;
echo '</table>';
?>
此处也有:
http://pastebin.com/at8S2THs
即使删除了所有非基本代码,我也无法完成这项工作。我知道您可以在查询中使用meta_key
和meta_value
等参数来缩小结果范围,但我只想为每个帖子显示我指定的键的所有值(如果存在)。 / p>
非常感谢任何帮助......
**解决方案**
只需在循环开始后添加global $post;
即可。感谢@Kimikaze在WP支持论坛上提供解决方案!
答案 0 :(得分:1)
当我在wordpress中找不到我需要的数据时,我总觉得将Global $ post对象打印到屏幕会很有帮助,所以我可以看到我的数据是否正在进入页面。
Global $post;
echo "<pre>";
print_r($post);
echo "</pre>";
所有辅助方法或“钩子”通常只是与此(或另一个)全局对象进行交互。检查$ post(也许是你的$ values数组)的输出你正在寻找的数据,如果它在那里,你可以直接对它进行检索,比如帖子标题,例如
$post->title
另一个想法,get_post_meta()的第三个参数使得它在设置为true时返回一个字符串,当它设置为false时你会得到什么?
答案 1 :(得分:0)
我猜这个问题与你用作元键的值有关。要使用get_post_meta()检索数据,您需要传入实际的meta_key值,这些值可能是“show_date”,“birth_year”和“origin”,因为meta_key值不处理大写字母或空格。尝试更改为您设置$ keys数组的值:
$keys = array('show_date','birth_year','origin');
如果这不起作用,可能值得检查数据库(在wp_postmeta表中)以确认实际的meta_key值。