2011-11-04 5 views
9

私はカスタムポストタイプを作成しました。それはWordPressのダッシュボードにうまくロードされ、私もそれを保存することができます。さて、それは、いくつかの文字列といくつかの日付のデータを含むカスタムの投稿型だとしましょう。カスタムポストタイプからカスタムデータを表示する方法

これらのカスタムポストタイプ(私はWP_Queryを使用して行い、カスタムポストタイプの名前にpost_typeを指定しています)を取得できます。返されたオブジェクトのprint_rを呼び出すと、オブジェクトのどこにもカスタムデータ(文字列と日付)が格納されます。どのように私はデータベースからこれらを取得しますか?

私は何時間も見てきましたが、このデータを取得する方法はありませんでした。要求されたとして

:これは、データが保存されている方法です。

function update_obituary(){ 
    global $post; 
    update_post_meta($post->ID, "first_name", $_POST["first_name"]); 
    update_post_meta($post->ID, "last_name", $_POST["last_name"]); 
    update_post_meta($post->ID, "birth_date", $_POST["birth_date"]); 
    update_post_meta($post->ID, "death_date", $_POST["death_date"]); 
    update_post_meta($post->ID, "publication_date", $_POST["publication_date"]); 
} 

この機能は、「save_post」フックに接続されています。編集モードでカスタムポストタイプのインスタンスを再度開くと、データが再表示されます。つまり、データベースに格納されていることを意味します。

+0

いくつかのコードを追加してください。追加のメタデータはどのように保存されますか? –

+0

が要求通りにコードを追加しました。 – Prusprus

答えて

9

タイプの投稿を編集するときにメタデータが表示された場合は、はい、DBに正常に保存されている必要があります。

カスタム投稿タイプのメタデータを取得する2つのwp関数があります:とget_post_metaです。違いは、get_post_custom_valuesは、一意でないカスタムフィールド、つまり単一のキーに関連付けられた複数の値を持つフィールドにアクセスできることです。あなたは味の質問にもかかわらず、それをユニークなフィールドのために使用することを選ぶかもしれません。

あなたのポストタイプが「死亡記事」と呼ばれていることを、想定すると:それは文字列ではなく配列を返すようになりますget_post_metaにブール値を除外 :

// First lets set some arguments for the query: 
// Optionally, those could of course go directly into the query, 
// especially, if you have no others but post type. 
$args = array(
    'post_type' => 'obituary', 
    'posts_per_page' => 5 
    // Several more arguments could go here. Last one without a comma. 
); 

// Query the posts: 
$obituary_query = new WP_Query($args); 

// Loop through the obituaries: 
while ($obituary_query->have_posts()) : $obituary_query->the_post(); 
    // Echo some markup 
    echo '<p>'; 
    // As with regular posts, you can use all normal display functions, such as 
    the_title(); 
    // Within the loop, you can access custom fields like so: 
    echo get_post_meta($post->ID, 'birth_date', true); 
    // Or like so: 
    $birth_date = get_post_custom_values('birth_date'); 
    echo $birth_date[0]; 
    echo '</p>'; // Markup closing tags. 
endwhile; 

// Reset Post Data 
wp_reset_postdata(); 

注意の言葉は、混乱を避けるために。 get_post_custom_valuesは常に配列を返します。そのため、上記の例では$birth_dateではなく$birth_date[0]が返されています。

また、$post->IDが上記のように動作するかどうかは、現時点では100%確信していません。そうでない場合は、get_the_ID()に置き換えてください。どちらもうまくいくはずです。確かにそうです。それをテストできましたが、時間を節約できました...

完全性のために、より多くのクエリ引数と正しい使い方については、WP_Queryのコーデックスを確認してください。

+0

ありがとう!これは素晴らしい!うまくいけば、私のような情報は、このページに落ちる情報を見つけるしようとしているスタック:) – Prusprus

+0

ニース!好奇心をそそられた自分のやり方、非常に有益な答え – Alex

+0

5年以上前の回答にコメントをすることに驚いた。しかし、WP APIのこの部分はあまり変わっていません - この情報は実際にはまだ真実です。 –

関連する問題