サポート » 使い方全般 » wp_list_pagesのようにタイトル&本文で固定ページ一覧表示を作りたい

  • 解決済 takaraism

    (@takaraism)


    固定ページの一覧を作りたいと考えております。
    一覧用の固定ページとしてtestというスラッグの固定ページを作り、
    page-test.phpを作ってオリジナルの固定ページテンプレを用意したうえで、

    ▼「固定記事(1)タイトル」
     固定記事(1)本文

      - 固定記事(1)の子記事(A)タイトル
        固定記事(1)の子記事(A)本文

      - 固定記事(1)の子記事(B)タイトル
        固定記事(1)の子記事(B)本文

    ▼「固定記事(2)タイトル」
     固定記事(2)本文

      - 固定記事(2)の子記事(C)タイトル
        固定記事(2)の子記事(C)本文

    と1ぺージ内に、全固定記事のタイトル・本文を、ツリー状に表示したいとチャレンジしているのですがうまくいきません。

    wp_list_pagesだとchildがついて段下げがされますが、
    固定ページタイトル+リンクでの吐き出しとなってしまい、上記のようなイメージではありません。

    if (have_posts()) : query_posts(‘post_type=page&posts_per_page=999&orderby=menu_order’);

    で回すと、とりあえず固定ページのタイトル、本文は引っ張ってこれますので、
    いろんなサイトの親・子判定などを試してみますが、
    現在表示しているページが親か子かという判定の分岐がほとんどで、
    いろいろいじってみるのですが、どの分岐もうまくいきません。

    希望は

    <ul>
    <li>固定記事(1)タイトル<br>
      固定記事(1)の子記事(A)本文

      <ul>
      <li>固定記事(A)タイトル<br>
        固定記事(A)本文<li>
      </ul>
    </li>
    </ul>

    となるのが理想ですが、親・子判定で

    <ul>
    <li class=”parent”>固定記事(1)タイトル<br>
      固定記事(1)の子記事(A)本文
    </li>
    <li class=”child”>固定記事(A)タイトル<br>
        固定記事(A)本文<li>
    </li>
    </ul>

    とliにクラスを付けるのでも何とか対応できますので
    何か良いヒントをご存知の方は教えて頂けたら幸いです。
    よろしくお願いいたします。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • CG

    (@du-bist-der-lenz)

    固定ページの親子関係で、一つにまとめて表示させるということでしょうか。

    トピック投稿者 takaraism

    (@takaraism)

    >CGさん
    はい、その通りです。
    その際に子は段落を落としたいので、何とかならないものかと四苦八苦しています。

    ishitaka

    (@ishitaka)

    こんにちは

    wp_list_pages() は、HTML レンダリングする Walker クラスを指定できるので、これを利用するのもいいかもしれません。

    functions.php に、

    class My_Walker_Page extends Walker_Page {
    	function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) {
    		parent::start_el( $output, $page, $depth, $args );
    		$output .= apply_filters( 'the_content', $page->post_content );
    	}
    }

    テンプレートに、

    <?php wp_list_pages( array( 'title_li' => '', 'walker' => new My_Walker_Page() ) ); ?>

    • この返信は5年前にishitakaが編集しました。
    ishitaka

    (@ishitaka)

    Walker クラスのもう一例。

    class My_Walker_Page extends Walker_Page {
    	function start_el( &$output, $page, $depth = 0, $args = array(), $current_page = 0 ) {
    
    		$args['link_before'] = empty( $args['link_before'] ) ? '' : $args['link_before'];
    		$args['link_after']  = empty( $args['link_after'] ) ? '' : $args['link_after'];
    
    		$atts                 = array();
    		$atts['href']         = get_permalink( $page->ID );
    		$atts['aria-current'] = ( $page->ID == $current_page ) ? 'page' : '';
    
    		$attributes = '';
    		foreach ( $atts as $attr => $value ) {
    			if ( ! empty( $value ) ) {
    				$value       = esc_attr( $value );
    				$attributes .= ' ' . $attr . '="' . $value . '"';
    			}
    		}
    
    		$output .= $indent . sprintf(
    			'<li><a%s>%s%s%s</a>',
    			$attributes,
    			$args['link_before'],
    			$page->post_title,
    			$args['link_after']
    		);
    
    		$output .= apply_filters( 'the_content', $page->post_content );
    	}
    }
    トピック投稿者 takaraism

    (@takaraism)

    >ishitakaさん
    ご回答ありがとうございました。
    無事動くことを確認できました。

    Walkerクラスというのを恥ずかしながら初めて知ったので
    これをもとにさらに勉強したいと思います。
    この度はありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「wp_list_pagesのようにタイトル&本文で固定ページ一覧表示を作りたい」には新たに返信することはできません。