サポート » プラグイン » Fold Page List で日付の表示

  • はじめまして。

    Fold Page Listというプラグインで、更新日時の表示をしたいのですが、うまく表示されません。
    http://www.webspaceworks.com/resources/wordpress/30/

    テンプレートタグのwp_list_pagesと同じパラメータを使用できるようですが、
    show_date=modified としても、表示されません。

    その他、ソート等は正常に動作しています。

    色々と調べましたが、有効な情報が見つからず、こちらに投稿しました。
    プラグインそのものが、しばらく更新されていないようなので、WPの仕様変更等が影響しているのでしょうか。

    希望としては、ページリストをサイドバーに表示したいのですが、
    wp_list_pagesでは、全てのサブページも展開されてしまうので、
    今開いているサブページだけ展開して表示するように考えています。
    これをFold Page Listで実現できるのですが、更新日時が表示できません。

    +[A]
     -[Aa]
     -[Ab]
    +[B]
     -[Ba]
     -[Bb]
    -[C]

    というページ構成があるとして、[Ba]を表示した場合のページリストが、

    [A] 20**/**/** **:**
    [B] 20**/**/** **:**
     [Ba] 20**/**/** **:**
     [Bb] 20**/**/** **:**
    [C] 20**/**/** **:**

    と表示されるようにしたいです。

    また、Fold Page List を使わずとも、このような表示が出来る方法がありましたら、
    そちらも教えて頂けると、助かります。

    よろしくお願いいたします。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • こちらの方が書いてる記事がビンゴですか?

    http://www.tsuruha.com/2009/04/wordpress-wp-list-pages.html

    トピック投稿者 mohihi

    (@mohihi)

    ありがとうございます。

    こちらのページも、こちらに投稿する前に試しました。
    リンク先にある、

    <Bbbにいる場合>
    [Ba]
    ― Bba
    ― Bbb
    ― Bbc

    の場合でも、下記のように、
    全ての親ページが表示される方法を探しています。
    (Homeはないと仮定します。)

    ― A
    ― B
    ―― Ba
    ―― Bb
    ――― Bba
    ――― Bbb
    ――― Bbc
    ―C
    ―D

    どの場合でも一番トップの階層から表示し、かつ今のページの子ページはすべて表示したいと考えています。

    興味があったので、いろいろさわってみました。
    これで動くと思いますがどうでしょう?

    整形されたhtmlの適宜修正してください。validじゃないと思いますので。

    <?php
    if(is_page()){
    	$list = $post->ancestors;
    	$parent['list'] = array_reverse($list);
    	$parent['cnt']  = count($list);
    	$parent['top']  = array_pop($list);
    
    	$page_list = get_pages('parent=0&sort_column=menu_order');
    	foreach($page_list as $id){
    		echo '<li><a href="'.get_permalink($id->ID).'">'.get_the_title($id->ID).'</a>'."\n";
    		if($id->ID == $post->ID){
    			echo "<ul><li>\n";
    			wp_list_pages('depth=1&title_li=&child_of=' . $post->ID );
    			echo "</li></ul>\n";
    		}
    		if($id->ID == $parent['top']){
    			$pointer = $parent['list'];
    			$cnt = 0;
    			while($buf = next($pointer)){;
    				echo '<ul>'."\n";
    				echo '<li><a href="'.get_permalink($buf).'">'.get_the_title($buf).'</a>'."\n";
    				$cnt++;
    			}
    			echo '<ul><li><a href="'.get_permalink($post->ID).'">'.get_the_title($post->ID).'</a>'."\n";
    			echo "<ul><li>\n";
    			wp_list_pages('depth=1&title_li=&child_of=' . $post->ID );
    			echo "</li></ul>\n";
    			for($i=0;$i<$cnt;$i++){
    				echo '</li></ul>'."\n";
    			}
    			echo '</li></ul>'."\n";
    
    		}
    		echo "</li>\n";
    	}
    }
    else{
    wp_list_pages('depth=1&title_li=');
    }
    ?>

    ちょっと生成されるhtmlに問題がありましたね。
    テーマに直接書くとややこしくなるので

    1.テーマディレクトリの function.php に以下のコードを

    function wp_list_pages_tree($post){
    	if(is_page()){
    		$list = $post->ancestors;
    		$parent['list'] = array_reverse($list);
    		$parent['cnt']  = count($list);
    		$parent['top']  = array_pop($list);
    
    		$page_list = get_pages('parent=0&sort_column=menu_order');
    		foreach($page_list as $id){
    			echo '<li><a href="'.get_permalink($id->ID).'">'.get_the_title($id->ID).'</a>'."\n";
    			if($id->ID == $post->ID){
    				echo "<ul>\n";
    				wp_list_pages('depth=1&title_li=&child_of=' . $post->ID );
    				echo "</ul>\n";
    			}
    			if($id->ID == $parent['top']){
    				$pointer = $parent['list'];
    				$cnt = 0;
    				while($buf = next($pointer)){;
    					echo '<ul>'."\n";
    					echo '<li><a href="'.get_permalink($buf).'">'.get_the_title($buf).'</a>'."\n";
    					$cnt++;
    				}
    				echo '<ul><li><a href="'.get_permalink($post->ID).'">'.get_the_title($post->ID).'</a>'."\n";
    				echo "<ul>\n";
    				wp_list_pages('depth=1&title_li=&child_of=' . $post->ID );
    				echo "</ul>\n";
    				for($i=0;$i<$cnt;$i++){
    					echo '</li></ul>'."\n";
    				}
    				echo '</li></ul>'."\n";
    
    			}
    			echo "</li>\n";
    		}
    	}
    	else{
    		wp_list_pages('depth=1&title_li=');
    	}
    }

    2.テーマのサイドバー等にコード(例)

    <li class="widget">
    <ul>
    	<?php wp_list_pages_tree($post); ?>
    </ul>
    </li>

    これでいいかと思います。

    トピック投稿者 mohihi

    (@mohihi)

    ありがとうございます。

    早速、試したところ、
    理想の表示となりました。
    ありがとうございます。

    もう一つ、お聞きしたいのですが、
    更新日時を全ての項目に表示したいのですが、
    今開いているページとその同階層のページに関しては、wp_list_pagesでの表示で出来るようなのですが、
    その上下のループとタグで表示している他階層のリストの更新日時をどのように表示すればよいでしょうか。

    get_the_titleのような形で更新日時を呼び出せるのではと、色々試しましたが、
    そのような関数がわからず、うまくいきませんでした。
    何か方法はありますでしょうか。

    頼ってばかりで申し訳ないですが、よろしくお願いします。

    トピック投稿者 mohihi

    (@mohihi)

    追記です。

    その後、それぞれの配列のデータをじっくり読んで、なんとか更新日時の表示が出来ました。

    PHPは、まだまだ始めたばかりなので、少しずつ理解していこうと思います。
    ありがとうございました。

    ご希望の動作でしたか?よかったです。

    いまいち私自身が飲み込めて無かった気がするので、ちょっと自信がありませんでした。
    とにかく動作してよかったです。

7件の返信を表示中 - 1 - 7件目 (全7件中)
  • トピック「Fold Page List で日付の表示」には新たに返信することはできません。