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() の 3 番目のパラメーターは、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 に答える