WordPress WP_Query可以返回自定义字段发布元吗?

时间:2011-11-10 20:42:02

标签: wordpress meta custom-fields

出于某种原因,我无法让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_keymeta_value等参数来缩小结果范围,但我只想为每个帖子显示我指定的键的所有值(如果存在)。 / p>

非常感谢任何帮助......

**解决方案**

只需在循环开始后添加global $post;即可。感谢@Kimikaze在WP支持论坛上提供解决方案!

2 个答案:

答案 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值。