サポート » 使い方全般 » wp_list_pagesで表示される情報をカスタムフィールドの値で置き換えたい

  • 解決済 kingoro

    (@kingoro)


    こちらのページを参考に、固定ページの親ページとそれに属する子ページを表示するサイドメニューを作成しました。

    WordPressをCMSとして利用する際、固定ページの親ページと子ページに共通のナビゲーションを作るTips – かちびと.net

    該当部分のソースは以下のような形です。

    <?php //親に属する子ページのリンクとタイトルをリストで取得
    if($post->post_parent)
    $children = wp_list_pages(“sort_column=menu_order&title_li=&child_of=”.$post->post_parent.”&echo=0″);
    else
    $children = wp_list_pages(“sort_column=menu_order&title_li=&child_of=”.$post->ID.”&echo=0″);
    if ($children) {
    ?>

      <?php //リストを表示
      echo $children;
      ?>

    <?php } ?>

    質問なのですが、wp_list_pagesで表示される題名部分をカスタムフィールドの値に置き換えることは可能でしょうか?
    その際、カスタムフィールドの「other_title」に入力があった場合はそれを表示、空白の場合は本来の題名を表示したいと考えております。
    説明が足りない部分もあるかもしれませんが、よろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • カスタムフィールドを表示したいのなら、wp_list_pages() ではなく get_pages() を使って子ページを取得し、その後ループを回してタイトルあるいはカスタムフィールドを表示させればいいと思います。

    トピック投稿者 kingoro

    (@kingoro)

    pluto1234様、ありがとうございました。
    アドバイスを参考にし、get_pages() を主体とし以下のような形で実装しました。

    pluto1234様、ありがとうございました。
    アドバイスを参考にし、get_pages() を主体とし以下のような形で実装しました。

    <?php
      $children= get_pages('child_of='.$post->ID.'&sort_column=menu_order');
    
      echo '<ul>';
    
      foreach ( $children as $page ) {//メニューの数だけ繰り返し
        $list_menu = '<li ><a hre f="' . get_page_link( $page->ID ) . '">';
    
        $menu_title = get_post_meta($page->ID, 'other_title', true);
        if($menu_title !=""){//「other_title」にデータがあった場合そちらを優先
          $list_menu .= $menu_title;
        }else{
          $list_menu .= $page->post_title;
        }
    
        $list_menu .= '</a></li >';
        echo $list_menu;
      }
    
      echo '</ul>';
    
    ?>

    最下層でも一つ上の階層のサイドナビを表示させたいのですが方法はございますでしょうか?

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「wp_list_pagesで表示される情報をカスタムフィールドの値で置き換えたい」には新たに返信することはできません。