WordPressにてget_the_ID()が機能しない?

謎な現象。

WordPressにて、以下のように固定ページのスラッグを取得しようと思ったところ・・・

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

動かない・・・。

body要素のclass属性にスラッグ名を設定しようとしたわけですが、body以降が生成されないために、ブラウザで確認すると真っ白。
ちなみに上記のコードをはずすとちゃんとページは表示されます。(もちろん、bodyのclassには何も設定されませんが)

今までさんざん使ってきて何の問題もなく動いていたのに、どうしたことでしょうか。
違うことといえば、今回使ったサーバーのPHPのバージョンが4だということくらい。
うーん。

get_the_ID()の代わりに、the_ID()を入れてみると、エラーにはならない。ならないけども、IDの数字がテキストとして表示されてしまうので使えない。

ただ、これでget_the_ID()で引っかかていることは明らか。

ひとまず、代用策として、グローバル変数$postを利用して以下のようにしてみました。

$page = get_page($post->ID);
$slug = $page->post_name;
echo $slug;

これで目的の動きは果たせるので事なきを得たのですが、謎が残ったまま。
なぜget_the_ID()は動かないのか?

時間があったら追跡調査しておきます。
何かわかったら追記しておきます。

その前に、だれか原因がわかる人がいたら教えて・・・。

PHP, Wordpress, 備忘録 | |