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になります。
以上、よろしくお願いします。
そういうのを可変関数 (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 でも同様に動くはずです。
こちらを参考に
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;?>
ご回答ありがとうございます。
スラッグの取得はこちらのスクリプトでうまくいきました。
私の環境ではそのままコピペしても動かなかったので、
2013/07/07 22:48:24お知らせいただいたページを参考にして、
下記のように書き換えたところうまくいきました。
<?php
get_page($page_id)->post_name;
$slug();
?>
なにはともあれ大変参考になりました。
ご回答ありがとうございました。
自分で書いたスクリプトを間違えてました。
2013/07/07 22:59:48正しくは下記のとおりです。
<?php
$slug=get_page($page_id)->post_name;
$slug();
?>