3

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

任何帮助将不胜感激...

** 找到解决方案 **

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

4

2 回答 2

1

当我在 wordpress 中找不到我需要的数据时,我总是发现将 Global $post 对象打印到屏幕上很有帮助,这样我就可以查看我的数据是否正在进入页面。

Global $post;
echo "<pre>";
 print_r($post);
echo "</pre>";

所有辅助方法或“钩子”通常只是与这个(或另一个)全局对象交互。检查 $post (可能还有 $values 数组)上的输出以获取您正在寻找的数据,如果它在那里,您可以直接引用它,例如帖子标题

$post->title

另一个想法,get_post_meta() 的第三个参数使它在设置为 true 时返回单个字符串,当它设置为 false 时你会得到什么?

于 2011-11-10T23:07:58.900 回答
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 值。

于 2011-11-10T20:51:50.320 回答