wordpressでpageのnice nameを取得する

2012年追記:三年もたったら分かりました。これだけで済みます。

           $page = get_page(get_the_ID());
           $slug = $page->post_name;

しかも今は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"

ということができます。