お世話になります。

WordpressとPHPについて質問します。

http://hoge.com/category/slug/
というURLのページがあるとします。
slugはワードプレスのスラッグがはいります。
このスラッグ名もしくはURLを自動的に取得して、
関数名を作り、動くようにするにはどうしたらよいのでしょうか?

例で言うと当該ページの中で、
slug()という関数がこの頁で自動的に作られ、動くようにしたいです。

蛇足ですが、
http://hoge.com/animal/momonga/であれば、
momonga()が動くようにしたいです。

たぶん色んなことを勘違いしてると思うのですが、
自分でなんとか作った粗末なスクリプトは下記のものです。当然動きません。
<?php echo get_page_uri($post->ID).'()'; ?>
※<と>の全角文字はわざとやってます。

質問というよりは作成依頼になるのかもしれませんが、
実際に動くスクリプトを作成していただけると大変ありがたいです。
スラッグ名の取得とは関係なく、
PHP的に解決していただいてもありがたいです。

私の環境は次のとおりです。
windows7、XAMPP1.8.2、PHP 5.4.16、Apache 2.4.4、Wordpress3.5.2になります。
以上、よろしくお願いします。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/07/07 22:51:17
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答2件)

id:a-kuma3 No.1

回答回数4967ベストアンサー獲得回数2151

ポイント50pt

そういうのを可変関数 (variable functions) と言うそうです。
http://www.php.net/manual/ja/functions.variable-functions.php

# 訳語が良くないですね。variable は可変というよりも、変数という意味合いじゃないかな...

スラッグは、$post->post_name で取得できると思うので、以下のような呼び出し方になると思います。

<?php
	$slug = $post->post_name;
	$slug();
?>

スラッグの取得については、フォーラムのこちらを参考にしました。
http://ja.forums.wordpress.org/topic/1652

page が手に入っているなら、$page->post_name でも同様に動くはずです。

id:taroemon

私の環境ではそのままコピペしても動かなかったので、
お知らせいただいたページを参考にして、
下記のように書き換えたところうまくいきました。

<?php
get_page($page_id)->post_name;
$slug();
?>

なにはともあれ大変参考になりました。
ご回答ありがとうございました。

2013/07/07 22:48:24
id:taroemon

自分で書いたスクリプトを間違えてました。
正しくは下記のとおりです。
<?php
$slug=get_page($page_id)->post_name;
$slug();
?>

2013/07/07 22:59:48
id:Yacky No.2

回答回数1376ベストアンサー獲得回数156

ポイント50pt

こちらを参考に
http://www.calmtech.net/2010/09/02/wp-get-page-slug/
投稿、ページ作成時にURIを指定して、それを利用してCSS切り替えやclass指定、画像表示の制御をしたい時

<?php if(have_posts()): while(have_posts()): the_post(); ?>
<?php $slug = get_page_uri(get_the_ID()); ?>   
...
<?php endwhile; endif; ?>

固定ページのスラッグを取得したい場合

<?php $page = get_page(get_the_ID()); ?>
<?php $slug = $page->post_name;?>
id:taroemon

ご回答ありがとうございます。
スラッグの取得はこちらのスクリプトでうまくいきました。

2013/07/07 22:50:08

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません