当第三个参数设置为true时,get_post_meta返回一个数组

时间:2012-11-21 15:44:09

标签: wordpress

[编辑] TLDR:答案:不要使用echo,而是print_r

我已尝试以下方法将元值作为字符串而不是数组。第三个值设置为true,因此这应该是一个字符串。

<?php

    // The data
    $projects = $wpdb->get_results( "SELECT * FROM $wpdb->posts" ); 


    // Loop them
    foreach ( $projects as $project ) 
    {
        // Get the meta
        $metas = get_post_meta( $project->ID,'bc_invited', true );

        // This is rendering
        echo '<h2>' . $project->post_title . '</h2>';

        foreach($metas as $meta){
            // This is not rendering
            echo $meta . '<br/>';
        }

    }
?>

为什么我没有看到我的期望?

1 个答案:

答案 0 :(得分:1)

get_post_meta 函数接收第三个参数为(boolean)(可选)如果设置为true,则该函数将返回单个结果,作为字符串。

如果为false或未设置,则该函数返回自定义字段的数组。在序列化数组的上下文中,这可能不直观。如果使用此方法获取序列化数组,则希望$ single为true以实际获取未序列化的数组。如果传入false,或者将其保留,则将包含一个数组,索引0处的值将是序列化字符串。 默认值:false

 <?php $meta_values = get_post_meta($post_id, $key, $single); ?>

现在你的问题是你将meta作为数组返回并使用 echo 导致问题,你必须使用 print_r 来查看结果