WordPressについての質問です。WordPressのテーマにあるheader.php内でグローバル変数を使うことができます。例えば$postのIDを取り出すなら


$post->ID

で投稿や固定ページのPost IDを取り出せます。

新しく自分でstyle.php(スタイルシート)というファイルを作りheader.phpでこのstyle.phpを呼び出しています。このstyle.phpの中では

$post->ID

をしても何も取り出せません。

sytle.phpでグローバル変数を使えるようにするにはどうしたらよいでしょうか?

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2010/05/21 14:24:06
  • 終了:2010/05/28 14:25:03

回答(3件)

id:hanako393 No.1

hanako393回答回数1142ベストアンサー獲得回数872010/05/21 16:15:56

ポイント27pt

いったんグローバル変数に入れることでとりあえず実現できます。

header.phpで

$postid = $post->ID;

で格納後、

style.phpで取り出します。

WordPressの場合、順序とかによってうまくWPで用意されてる変数の値が取り出せないことがあります。

http://q.hatena.ne.jp/answer

id:lightbody

回答ありがとうございます。

header.php内で

$post_ID = $post->ID;

としてstyle.phpで

$post_IDの中身を見ると空でした。

ちなみにstyle.phpはheader.php内で<link rel="stylesheet" href="http://hoge.hoge.com/wp-content/themes/hoge_theme/style.php" type="text/css" media="screen" />として呼び出しています。呼び出し方が問題?。

2010/05/21 18:57:58
id:zaxaxaz No.2

zaxaxaz回答回数13ベストアンサー獲得回数32010/05/26 10:51:28

ポイント27pt

呼び出し方が悪いです。あとthe_post()してないと$postには何も入らないと思います。

本来であればWPのAPIをつかってCSSを登録したほうがいいですが、手軽にやるなら、

<?php $postid = '0'; if (have_posts()) { the_post(); $postid = $post->id; rewind_posts(); } ?>
<link rel="stylesheet" href="http://hoge.hoge.com/wp-content/themes/hoge_theme/style_<?php echo($postid); ?>.css" type="text/css" media="screen" />

のような感じで、読み込むCSSファイル自体を切り替えてみてはどうですか?

http://wpdocs.sourceforge.jp/The_Loop

id:lightbody

回答ありがとうございます。

header.phpにて切り替える方法でも可能ですが、cssの種類をたくさん作る可能性があるのでheder.phpでcssを切り替えるのではなく、style.phpを動的に変えたいと思って質問をしました。

2010/05/26 19:36:11
id:zaxaxaz No.3

zaxaxaz回答回数13ベストアンサー獲得回数32010/05/26 21:30:17

ポイント26pt

>header.phpにて切り替える方法でも可能ですが、cssの種類をたくさん作る可能性があるのでheder.phpでcssを切り替えるのではなく、style.phpを動的に変えたいと思って質問をしました。

それでしたら、前回の回答を応用してGETパラメーターで渡すようにしてはどうでしょうか?


<?php $postid = '0'; if (have_posts()) { the_post(); $postid = $post->id; rewind_posts(); } ?>
<link rel="stylesheet" href="http://hoge.hoge.com/wp-content/themes/hoge_theme/style.php?postid=<?php echo($postid); ?>" type="text/css" media="screen" />

sytle.php側では、こんな感じで。


$postid = $_GET['postid'];

style.phpの中でWPの関数を使いたいとなると、WPに手を入れるかプラグイン作成。あるいは、includeするファイルを調査する必要があると思いますが、単に$post->idを使いたいだけなら上記でいけると思います。

http://q.hatena.ne.jp/answer

id:lightbody

回答ありがとうございます。

やはりheder.phpでグローバル変数を取得してstyle.phpに引数で渡すのが簡単そうですね。

>WPの関数を使いたいとなると、WPに手を入れるかプラグイン作成。あるいは、includeするファイルを調査する必要があると思いますが

ここがよくわからなかったのです。wpの関数はwp-load.phpのincludeでいけますがグローバル変数がさっぱりわかりません。

いろいろ調べたのですがわからなくて、片っぱしからincludeも試してみたのですがうまくいかないのです。wpはソースを自分でインストールしているので

ありますが、中身を見てもよくわかりませんでした。

2010/05/26 21:49:40

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

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません