2012年追記:三年もたったら分かりました。これだけで済みます。
[sourcecode language=’php’] $page = get_page(get_the_ID());
$slug = $page->post_name;[/sourcecode]
しかも今はnice_nameではなくslugですね。
以下は古い内容です。
wordpressのthemeでそれぞれのページのnice_nameを得る方法です。
wordpressのpageの記事や、個々の記事を表示する際、cssでページごとにデザインや動作を変えるときに役に立ちます。
ほかにもいろいろあると思うのですが、記述が簡単なのができました。
たとえばそのページがhttp://aaa.com/bbb/ccc/であれば”ccc”を得られます。
但し、パーマリンク構造がデフォルトの場合は使えません。
ページのURIが日本語の時もたぶん使えません。
なので”パーマリンク”欄で英字にしたpageなどで役に立つと思います。
まず
function.phpに関数を追加
function GetPageNiceName($val=''){ $url=get_permalink();//ここだけはwordpress関数 $ary= split('/',$url);//スラッシュで区切る array_pop($ary); if($val){ while($val){array_pop($ary);$val--;} } $page_nice_name=array_pop($ary); //ピリオドが入っている場合はドメイン名なので除く if( ereg("\.",$page_nice_name)){ $page_nice_name=null; } return $page_nice_name; }
nice nameを表示したい場所に
if(GetPageNiceName()){echo GetPageNIceName();}
を追加
これでそのページが
http://aaa.com/bbb/ccc/
や
http://aaa.com/bbb/ccc/index.php
http://aaa.com/bbb/ccc/index.php?tag=xx
などであれば”ccc”を出力します。
また更に、オプションとして
if(GetPageNiceName(1)){echo GetPageNIceName(1);}
とすれば後ろから二番目つまり
http://aaa.com/bbb/ccc/であれば”bbb”を表示します。これを両方bodyタグのclass=””の中に記述すれば
class="bbb ccc"
ということができます。