• 以下のページを参考に、カスタム投稿ページに属する親〜全ての子ページのリストを表示しております。
    https://gist.github.com/gatespace/5131387

    次に、リンク先のタイトル+改行してスラッグ名も表示するようにしたいです。
    <例>
    メニュー キャンペーン 地図
    menu   campaign   map

    以下のコードで作成すると、現在ページのスラッグが取得されてしまい、
    全てのリンクに同じスラッグが表示されてしまいます。
    <例:メニューページにいる時>
    メニュー キャンペーン 地図
    menu   menu     menu

    リンク先のスラッグを取得するにはどのようにすればよろしいでしょうか?
    よろしくお願いします。

    ■構成

    カスタム投稿名:店舗(shops)
    階層:有り
    各店に子ページを作成 ※()はページスラッグ名
    ●A店舗(a)→Aメニュー(menu)/Aキャンペーン(campaign)/A地図(map)
    ●B店舗(b)→Bメニュー(menu)/Bキャンペーン(campaign)/B地図(map)
    C,D,E店舗も同様…

    各店内で子ページが見れ、他店の子ページは表示しない
    イメージは「食べログ」みたいな感じです。

    ■function.php

    <?php
    add_filter('page_title','my_page_title', 10, 2);
    function my_page_title($page_title){
      $page = get_page(get_the_ID());
      $slug = $page->post_name;
      return $page_title . '<br />' .'<span>'.$slug.'</span>';
    }
    ?>

    ■page.php

    <?php
    	$ancestor = array_pop(get_post_ancestors($post->ID));
    	if($ancestor) {
    		$parent = $ancestor;
    	} else {
    		$parent = $post->ID;
    	}
    	add_filter('the_title', 'my_page_title');
    	$children = wp_list_pages("post_type=shops&title_li=&child_of=".$parent."&echo=0&sort_column=menu_order");
    	remove_filter('the_title', 'my_page_title');
    	if ($children) {
    		echo "<ul>\n".$children."</ul>\n";
    	}
    ?>

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • モデレーター gatespace

    (@gatespace)

    ■functions.php

    <?php
    add_filter('page_title','my_page_title', 10, 2);
    function my_page_title($page_title){
      $page = get_page(get_the_ID()); // そもそも get_the_ID() の値はただしいのか
      $slug = $page->post_name;
      return $page_title . '<br />' .'<span>'.$slug.'</span>';
    }
    ?>

    get_the_ID() はループ内 で使える関数です。
    functions.phpではそのまま使えません。

1件の返信を表示中 - 1 - 1件目 (全1件中)
  • トピック「同じ階層内のリンクメニューにタイトル名+スラッグ名を表示したい」には新たに返信することはできません。