【PHP/WP】ページの表示をURLによって切り替える
こんにちは、しきゆらです
Web関連の内容が続きますが、今回はサーバ側の話です
前回の冒頭でも書きましたが、最近はWebページを作っています
WordPressを使っているので、ほしい情報の大半は見つかるのでとても楽に作ることができました
しかし、一つ困ったことが・・・
ページの内容をどうにかして切り替えたい!
色々と調べていると使えそうな内容が見つかったのでメモしておきます
今回やりたいこと
大雑把に言うと、個別ページ(single.php)には「記事の内容」と「コメント」の2つが含まれています
私はこう思ったわけです・・・
「記事部分」と「コメント部分」を切り替えたい!!
どういうことかというと、リンクを2カ所用意(仮にA,Bとする)し
Aをクリックした場合には「記事部分」
Bをクリックした場合には「コメント部分」
というように、一つのページの中で踏んだリンクによって表示する内容を変えたいと思ったわけです
どうする?
各記事へのリンクをクリックすると、まずはPHP(WordPress)が動き始めます
ということは、リンクに対して何か細工してあげればよさそうだな、ということで調べてみました
こちらのサイトで、URLの後ろに「?hoge=fuga」とすると$_GET['hoge’]でhugaを取得できるとありました
つまり、これでどのURLを押されたのかを取得することができるわけです
実際にやってみると、$_GET['hoge’]とやっても中身は空っぽのままでした・・・
($_POST['hoge’]で試してみても結果は同じでした)
※追記:2015年11月13日
改めて確認してみたところ、$_GET['hoge’]でも取得出来ていました
恐らく、上記の中身が空っぽなのは変数名を間違えたのだと思います・・・
他に手は無いかと調べていると、以下のサイトにて$GLOBALSという変数があることを知りました
この変数には、WordPessが生成したグローバル変数が含まれているとのこと
var_dumpで見てみるとかなりの量の変数が生成されていました
その中で、ありました「_GET['hoge’]」!
(なんで上で確認したときは取得できなかったのか・・・)
と、いうことで今は
$var = $GLOBALS['_GET']['hoge'];
としてクリックされた場所を取得するようにしました
あとは、single.phpのほうで
if($var == "引数"): 引数とあっている場合の処理~ else: それ以外の処理~ endif;
のような感じで、引数によって表示するものを変えてあげればokというわけです
私の場合は、
引数とあっている場合に「記事部分」を出力
引数と違う場合に「コメント部分」を出力
という風にしました
まとめ
今回は、ページの表示をURLによって切り替える為に
PHPのURLに引数を持たせることで、ページの表示を切り替えることができました
ほしい動作を実装することができてとても満足です
では、今回はこの辺で
おわり