質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

3回答

4961閲覧

WordPressで使用してはいけない変数名について

umauman

総合スコア57

WordPress

WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/12/27 15:40

編集2016/12/28 06:14

別の質問をしていてWordPressで使用する変数名について疑問を持つようになりました。

■別の質問 ※特に読んでいただく必要は無いかと思うのですが、念のため
https://teratail.com/questions/59959

例えば、カテゴリーアーカイブで「get_the_category」や「get_queried_object」でカテゴリーの情報を取得する場合、下記のように変数名に「$cat」を使うのはNGなのでしょうか。

■下記はNG?

php

1//変数名「$cat」はNG? 2$cat = get_the_category(); //NG? 3$cat = get_queried_object(); //NG?

というのも、前回の質問のやり取りで「カテゴリアーカイブでは既に「$catにid」が入っている」という内容の回答をいただいたからです。

ネットで検索していると、「$cat」を変数に使用されている記述を結構見かけます。
※どのテンプレートに使用しているか不明なものもありますが

■よく見かける記述

php

1//よく見かける記述 2$cat = get_the_category(); 3$cat_id = $cat[0]->cat_ID;

カテゴリーアーカイブで「$cat」を使用したらうまく動作しない事象に遭遇しました。

■動作しない記述

php

1if ( is_category(array(1,3,5,))) { 2$hoge = $cat; //←ここが動作しない 3} 4 5//上記とは別の場所で使用するために定義 6$cat = get_queried_object(); 7$cat_id = $cat -> cat_ID; // ID取得 8$cat_name = $cat -> cat_name; // カテゴリー名 9$cat_slug = $cat -> category_nicename; // スラッグ 10$cat_link = get_category_link($cat_id); // リンクURL

■動作するようになった記述 ※「$cat ⇒ $categories」 に変更

php

1//動作するようになった記述 2if ( is_category(array(1,3,5,))) { 3$hoge = $cat; //←ここが動作するようになった 4} 5 6//上記とは別の場所で使用するために定義 ※「$cat ⇒ $categories」 に変更 7$categories = get_queried_object(); 8$categories_id = $categories -> cat_ID; // ID取得 9$categories_name = $categories -> cat_name; // カテゴリー名 10$categories_slug = $categories -> category_nicename; // スラッグ 11$categories_link = get_category_link($categories_id); // リンクURL

変数を決める際は下記を使用しないようにするという理解であっていますでしょうか?
http://wpdocs.osdn.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/register_taxonomy#Reserved_Terms

どのように変数名を決めたら良いのか混乱してきました。
皆さんどのように変数名を決めておられるのでしょうか?
初歩的な質問で恐れ入りますが、どうぞ宜しくお願い申し上げます。

===追記===
説明が不足していたように思いますので追記いたします。
最後のリンクは「カスタム分類」の予約語になります。
関数リファレンス/register taxonomy#予約語

「WordPress、予約語」で検索してもこちらばかりヒットしますが
こちらはWordPress全体の変数名としても使わない方が良いものでしょうか。

具体的にWordPressではこの変数名は使ったらNGというものがあるのか、
もしくは単にPHPの変数名のルールに従えば良いのか
この当たりが良くわからず、どうぞよろしくお願い申し上げます。

つたない説明で申し訳ございません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

テーマの functions.php にいきなり $cat = get_the_category(); というような書き方をしないで

  • 関数を作る
  • クラスを作る

などを行うようにするのはいかがでしょうか? また、 WordPress のテーマやプラグインでは、関数・クラスを作る時は、オリジナルのプレフィックスを付けるのが作法となっています。以下に teratail をプレフィックスにした例を示します。

php

1function teratail_get_post_cat( $post_id ) { 2 // 何かしらの処理 3}

php

1class TERATAIL_GetMyPosts { 2 // 何かしらの処理 3}

クラスの場合は、namespace を使うと楽になると個人的に思います。

投稿2016/12/27 19:51

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umauman

2016/12/28 06:06

ご回答ありがとうございます。 質問がわかり辛かったかもしれませんが、 functions.phpでは無く、 カテゴリーテンプレートに$catを使うのはNGなのかを疑問に思っております。 例えば、下記のようなカテゴリーアーカイブになり得るテンプレートです。 category.php archive.php index.php もしくはそもそもカテゴリーテンプレートに「$cat = get_the_category();」とは 記述せずに、functions.phpに関数として記述した方が良い、という意味でしょうか? 差支えなければ再度教えてはいただけないでしょうか? ちなみにfunctions.phpの関数はおっしゃる通りオリジナルの接頭辞を付けるのが 慣例になっているようですのでつけるようにしております。 ただ、もっぱらコピーペーストで、理解しきれないで記述していることが多いのが残念なところであります…
guest

0

WordPressは専門外ですが

変数を決める際は下記を使用しないようにするという理解であっていますでしょうか?

WordPressやPHPに限らず、他の言語もそうですが、予約語に挙げられた単語は変数としては使用できません。なので、上記の理解で合っています。

で、肝心の変数の名前の決め方ですが、特にこれと言ったルールはないですが、**「目的がわかるような名付け」**をするのが妥当かと思います。例えば、キーになるカテゴリーであれば「key_category」とか(すいません、ちょっと、いい例が浮かびませんで)。


以下、私見。
ただ、私的にはWordPressのこの予約語の付け方がイマイチというか、ユーザーの自由度を奪っているように見えます。PHPやRubyといったプログラミング言語ならばまだしも、フレームワーク(実際にはフレームワークではないらしいですが)のWordPressが同様に一般名詞そのままを予約語にしているのはどうかと。予約語にしているというのはシステム内部で使用している(しかもグローバルにですかねこれだと)というわけですが、それならば、システム専用の名付けをするべきではないかと(例えば、WP_という接頭辞を付けるとか)。一般名詞そのままなんて誰もが考えつく変数名ですし。
プログラマブルを謳っている割には、ユーザーに対してすごい制限を課しているように見えます。

投稿2016/12/27 16:34

archiver

総合スコア1557

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

umauman

2016/12/28 06:06

ご回答いただきましてありがとうございます。 私見の部分を興味深く読みました。 質問でも書きました、よく見かける記述というのは もしかすると、単に「category」だから「cat」ってつけておこう と言った理由なのかもしれないな、と思ってしまいました。自分を含めて。 ↓↓↓ ==== //よく見かける記述 $cat = get_the_category(); $cat_id = $cat[0]->cat_ID; ==== ちゃんと誤動作しないのを理解して付けておられる方もいるのかもしれませんが… このあたりが謎です。 確かにWP_とかの接頭辞をつけて貰えれば、悩まずに済みますよね。 ただ、リンク先は「register taxonomy」の分類名の予約語で これがWordPressの変数にもつけるのはNGになるのかそのあたりが よくわからず… 説明が不足のように思いますので質問に追記してみることにします。 (WordPressは専門外でおられるとのことですので、念のため…) 再度、ご親切に回答いただきまして本当にありとうございました。
guest

0

自己解決

長らく解決済みにせず放置してしまった質問です。
ご回答いただいた内容、勉強になりました。

PHPの予約語に加え、WordPressのグローバル変数は避けた方が良いのだろうなとわかってきました。

WordPress Codex グローバル変数

特に「$post」等は何気なく変数名に使ってしてしまいそうですが、気を付けるようにしたいと思います。

投稿2017/06/04 06:49

umauman

総合スコア57

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問