人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

お世話になります。
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になります。
以上、よろしくお願いします。


●質問者: taroemon
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● a-kuma3
●50ポイント

そういうのを可変関数 (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 でも同様に動くはずです。


taroemonさんのコメント
私の環境ではそのままコピペしても動かなかったので、 お知らせいただいたページを参考にして、 下記のように書き換えたところうまくいきました。 <?php get_page($page_id)->post_name; $slug(); ?> なにはともあれ大変参考になりました。 ご回答ありがとうございました。

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

2 ● エネゴリ
●50ポイント

こちらを参考に
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;?>

taroemonさんのコメント
ご回答ありがとうございます。 スラッグの取得はこちらのスクリプトでうまくいきました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ