サポート » 使い方全般 » 子ページのカスタムフィールドを親ページに一覧で

  • 解決済 pilkul1pon

    (@pilkul1pon)


    こんばんは。
    ページのカスタムフィールドを使用して情報を表示させたいのですが苦戦しています。

    子ページには「カスタムフィールドテンプレート」というテンプレートをインストールし、
    カスタムフィールドには4つの情報を持たせています。

    1) アイコン(gif画像) 数種の画像を用意し、ラジオボタンで任意の画像
     (画像を表示させるhtmlソース)を選択
    2) 文字情報A
    3) 文字情報B
    4) 文字情報C
    5) 文字情報D ※長文でページによっては情報が無い事もある

    子ページは複数存在し、親ページに子ページのカスタムフィードの情報を一覧表示させたいのです。

    一覧はテーブルを使い、子ページ1つのデータは下記のようにしたいと思います。

    <tr><td>[画像]文字A</td><td>文字B</td><td>文字C</td></tr>
    <tr><td colspan=”4″>文字D</td></tr>

    ※子ページによって文字Dは無い場合があります。

    上記の表示は可能でしょうか。
    ご指導、よろしくお願いします。

    ※投稿前に似たようなトピックを見てみましたが解決できませんでした。
    ※当方wordpressの知識は浅く、PHPはほとんど理解できないやつです。

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • 未検証:
    以下のようなコードでそれらしいことができまると思います。
    細かいところはよきにはからってください。

    $children = get_children(array(
      'post_parent' => get_the_id(),
      'post_type' => 'page',
      'post_status' => 'publish'
    ));
    
    foreach($children as $child){
      $icon = get_post_meta($child->ID, 'icon', false);
      $a = get_post_meta($child->ID, 'a', false);
      $b = get_post_meta($child->ID, 'b', false);
      $c = get_post_meta($child->ID, 'c', false);
      $d = get_post_meta($child->ID, 'd', false);
    
      echo '<tr><td>' . $icon . $a . '</td><td>'
         . '<td>' . $b . '</td>'
         . '<td>' . $c . '</td></tr>';
      if($d)
        echo '<tr><td colspan="4">' . $d . '</td></tr>';
    }

    kz様
    返信ありがとうございました。

    早速試してみましたが、うまく情報を表示できませんでした。
    htmlソースでは、下記のように表示されました。

    <table>
    <tr><td>ArrayArray</td><td>Array</td><td>Array</td></tr><tr><td colspan=”4″>Array</td></tr>
    <tr><td>ArrayArray</td><td>Array</td><td>Array</td></tr><tr><td colspan=”4″>Array</td></tr></table>

    いただいたソースは下記のようにして貼り付けてみました。

    <table>
    <?php
    $children = get_children(array(
    ‘post_parent’ => get_the_id(),
    ‘post_type’ => ‘page’,
    ‘post_status’ => ‘publish’
    ));

    foreach($children as $child){
    $icon = get_post_meta($child->ID, ‘icon’, false);
    $a = get_post_meta($child->ID, ‘a’, false);
    $b = get_post_meta($child->ID, ‘b’, false);
    $c = get_post_meta($child->ID, ‘c’, false);
    $d = get_post_meta($child->ID, ‘d’, false);
    ?>

    <?php
    echo ‘<tr><td>’ . $icon . $a . ‘</td>’
    . ‘<td>’ . $b . ‘</td>’
    . ‘<td>’ . $c . ‘</td></tr>’;
    if($d)
    echo ‘<tr><td colspan=”4″>’ . $d . ‘</td></tr>’;
    }
    ?>
    </table>

    お手数をお掛けしまして申し訳ありませんが
    ご指導、よろしくお願いします。

    kz様
    もしやと思い報告させていただきますが、
    今回お世話になっている親ページとは厳密には孫ページとなり
    曾孫ページのカスタムフィールドのデータを孫ページに表示させたいと思っています。

    孫ページの上位2層のページは、孫ページを束ねるインデックスのようなものです。

    私の説明が間違っていました。

    この件も表示されないことに関係しますでしょうか?

    あ、
    get_post_meta($child->ID, 〜, false);
    の false は全部 true です。

    kz様
    返信が遅くなりました。申し訳ありません。

    お蔭様で、無事データを表示することができました。
    ありがとうございました。

    ところで、今回のデータの表示ですが、データの並び順を
    ページの「順序」の通りにすることはできるのでしょうか?

    何度も申し訳ありませんが、よろしくお願いします。

    データの並び順をページの「順序」の通りに

    ページの「順序」が何を意図しているかをご説明いただくと回答がしやすいです。
    get_children()で拾ってくるページの順序なら
    get_posts() の order, orderby パラメータが使えるので色々お試しください。

    説明が足りませんでした。失礼しました。

    ページの入力画面の「属性」内に「順序」を数字で
    入力するフィールドがあると思います。

    この「順序」で指定した順番の通り、データを表示させたいと思っています。

    get_posts() の order, orderby パラメータは関連するウェブページを閲覧しましたが
    うまく反映できませんでした。見よう見まねでソースを追加したものの、間違っていたのでしょうか、
    真っ白いページのみが表示されてしまいます。

    get_post_meta($child->ID, 〜, true); のどこかにパラメータを挿入するのでしょうか。
    私の知識が足りないばかりにご面倒をお掛けしますが、具体的にお教えいただけると助かります。

    よろしくお願いします。

    Orderby Parameters
    ・orderby=menu_order Note: Only works with Pages.  !!

    Order Parameters
    ・order=ASC – ascending order, lowest to highest value !!

    $children = get_children(array(
    'post_parent' => get_the_id(),
    'post_type' => 'page',
    'post_status' => 'publish',
    'orderby' => 'menu_order',
    'order' => 'ASC'
    ));

    kz様
    お蔭様で、無事思った通りにデータを表示させることができました。

    何度もご指導いただき、ありがとうございました!

9件の返信を表示中 - 1 - 9件目 (全9件中)
  • トピック「子ページのカスタムフィールドを親ページに一覧で」には新たに返信することはできません。