サポート » 使い方全般 » カスタム投稿横断してカスタムフィールドの内容を取得したい

  • 作者(ユーザー)が合致するカスタム投稿(A)のカスタムフィールド A の値を同じ作者のカスタム投稿(B)に表示したい場合どのようにすれば良いですか?

    (前提:記事の作者は多数存在しそれぞれ、作者の投稿するカスタム投稿の記事は A/B 一つづつのみ。)
    作者1:カスタム投稿 A (投稿数1)・カスタム投稿 B (投稿数1)
    作者2:カスタム投稿 A (投稿数1)・カスタム投稿 B (投稿数1)
    作者3:カスタム投稿 A (投稿数1)・カスタム投稿 B (投稿数1)
    .
    .
    .

    リファレンスに書かれている横断してフィールド値を表示する方法
    <?php
    $custom_fields = get_post_custom(500); // 500 はその作者が投稿したページ ID
    $my_custom_field = $custom_fields[ ‘カスタムフィールドの値’ ];
    foreach ( $my_custom_field as $value ) {
    echo $value;
    }
    ?>

    上記は、それぞれのカスタム投稿を横断して指定した値を取得することはできました。が、この方法だと、IDで指定したフィールドの内容しかフィールド値を取得できないので、作者が合致するカスタム投稿 A/B においてカスタム投稿 A のカスタムフィールドの値をカスタム投稿 B で表示したい場合には違う書き方が必要なのはわかるのですがその書き方がわかりませんでした。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • こんにちは

    下記の手順でカスタム投稿 A の投稿 ID を取得できます。
    あとは、取得した投稿 ID でカスタム フィールドを取得するというフローです。

    1. $post->post_author 等で投稿者 ID を取得する。
    2. get_posts や WP_Query 等で、条件にカスタム投稿 A と投稿者 ID を指定して投稿を取得する。
    3. 取得した投稿の投稿 ID を取得する。

    例)テンプレートのループ内に

    $the_query = new WP_Query( array(
    	'post_type' => 'a', // カスタム投稿 A のカスタム投稿タイプ
    	'author' => $post->post_author,
    	'posts_per_page' => 1,
    ) );
    if ( $the_query->have_posts() ) {
    	$id = $the_query->post->ID;
    
    	$custom_fields = get_post_custom( $id );
    
    	(省略)
    }

    なるほどauthorのidの取得はそうやるんでしたか。

2件の返信を表示中 - 1 - 2件目 (全2件中)
  • トピック「カスタム投稿横断してカスタムフィールドの内容を取得したい」には新たに返信することはできません。