0

[編集] TLDR: 答え: を使用 ないでください。echoprint_r

メタ値を配列ではなく文字列として取得するために、次のことを試しました。3 番目の値は 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/>';
        }

    }
?>

期待したものが表示されないのはなぜですか?

4

1 に答える 1

1

get_post_meta関数は、3 番目のパラメーターを (ブール値) (オプション) として受け取ります。true に設定すると、関数は単一の結果を文字列として返します。

false の場合、または設定されていない場合、関数はカスタム フィールドの配列を返します。これは、シリアル化された配列のコンテキストでは直感的ではない場合があります。このメソッドでシリアライズされた配列をフェッチする場合、実際にシリアライズされていない配列を取得するには、$single を true に設定する必要があります。false を渡すか省略した場合、配列は 1 になり、インデックス 0 の値がシリアル化された文字列になります。デフォルト: false

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

今あなたの問題は、メタを配列として返し、エコーを使用したため、代わりにprint_rを使用して結果を確認する必要があることです

于 2012-11-21T15:50:23.327 に答える