こんにちは、
変数の定義ファイルをインクルードする時に、WordPress関数を使ったほうがいいのか、PHP関数を使ってもいいのかという事ですが、
テーマのガイドラインでは、以下のように決まっています。
変数名には、Prefixをつけることになっています。(通常テーマ名などをプレフィックスとします)同名の変数が衝突しないためです。
get_template_part()やlocate_template()等のWordPress関数では、変数のインクルードはできません。
(関数やクラスは読み込めます)
PHPのincludeやrequire関数を使っていい場所は、functions.phpだけに決まっています。
category.phpやsingle.phpでは、PHPのincludeやrequireは使ってはいけないことになっています。
functions.phpでインクルードした変数は、category.phpやsingle.php などのテンプレートでは、読み込めますが、
header.phpやfooter.php等のテンプレートパートファイルでは、読み込みません。
テンプレートパートファイル内で、読み込むためには、
global $hoge;
を行う必要があります。
nobita様
回答ありがとうございます!!
functions.phpにincludeしてcategory.phpやsingle.php で
使用するということなんですね。
試してみたところ、使えました!ありがとうございます。
テンプレートパートファイル内でも、globalにて読み込めました。
本当にありがとうございます!
それともう一つご質問させていただいてよろしいでしょうか?
$cat = get_the_category();
$cat = $cat[0];
$hoge_cat_id = $cat -> cat_ID;
この$hoge_cat_idのようにカテゴリIDを取得したものを
色んなところで使う事はできるのでしょうか?
WordPress Codex 日本語版にて
このテンプレートタグ get_the_category は、現在の記事が属するカテゴリをオブジェクト形式で返します。このタグはパラメータとして投稿IDを渡すことで、ループの外でも使うことが出来ます。
とあったのを見たのですが、get_the_category は、使う場所で上記のように宣言して
使うのでしょうか?
ものすごくとんちんかんなことを言っていたら申し訳ありません。。。
それに加えて質問も返してしまいすみません。。。
WordPress関数を使った複数行にわたるコードの結果を一つにまとめて使う場合は、
functions.phpにオリジナルの関数を記述することができます。
関数名には、変数名と同様にプレフィックスをつける必要があります。
関数名の衝突を避けるためです。
function prefix_article_first_cat_id( $ID ) {
$cat = get_the_category($ID);
$cat = $cat[0];
$hoge_cat_id = $cat->cat_ID;
return absint( $hoge_cat_id );
}
テンプレートの好きな場所で、投稿IDを引数にした関数を実行することができます。
echo prefix_article_first_cat_id( 投稿ID );
`
nobita様
丁寧な回答本当にありがとうございます!!
さっそく試してみたところ、できました。
ずっと疑問に思っていたことが解決したので、進められそうです。
本当にありがとうございました!!