*

WordPressでリンク元によってデザインを変える、phpでリンク先に変数を送る方法

公開日: : WordPress

WordPressでリンク元によってデザインを変える

ちょっと変わったケースの依頼で1つの WordPress に2つのサイトを共存させ、一部ページは2つのサイトで共通に使いたいというものがありました。ようするに1つの WordPress 管理画面で2つのサイトを管理したいという事です。

WordPress にはマルチサイト機能というものがあって技術的には可能です。しかし、管理画面をなるべく煩雑にせず簡単に、サイト規模的にもそこまでする必要はないだろうと思って別の方法をとる事にしました。

ページを共通で使う為には?

一つのページを2つのサイトで共通に使う為には、アクセスしてきたサイト(リファラ)によってデザインを合わさなくてはいけません。ちなみにサイト構成は以下のような感じです。

サイトA : http://example.com/
サイトB : http://example.com/new-site/

最初はリファラを取得して、new-site が含まれていたらヘッダーを読み換える事を検討しました。以下のような事でできます。

if(strstr($_SERVER['HTTP_REFERER'],"new-site")) $design = 1;

strstr 関数は文字列の中から指定文字列が含まれているかどうか調べるものです。含まれていたら desgin 変数に1を代入します。

しかし、リファラというものは常に取得できるものではありません。閲覧者側の設定により取得できない事もあり、その場合意図しないデザインが読み込まれてしまう場合があります。その為、次の方法としてリンク先に変数を送るようにしてみました。

phpでリンク先へ変数を送る

php でリンク先へ変数を送る方法は意外と簡単で、a タグに設定するリンク先を次のようにします。

<a href="common.html?design=1">共通ページ</a>

?より先はパラメーターで変数の代入式を書いています。?より先はリンク先に影響しません。パラメーター付きリンクでリンク先へ飛ぶと当然 URL は以下のようになります。

http://example.com/common.html?design=1

こうなっていると php でパラメーター部分を変数として取得できるのです。例えばサイトB からの共通で使うページへのリンクをパラメーター付きリンクにすれば、それだけでリンク元によって条件分岐できる変数を得る事ができます。

if($_GET['design'] == 1) $chk = 1;

URL のパラメーターから php で変数として受け取るには「$_GET」を使います。カッコの中にはパラメーター名を書きます。ここではパラメーターの design が1だったら chk 変数に1を代入しています。

変数によってヘッダーを読み換える

条件分岐の変数を得ることができたので、あとはヘッダーを読み換えるだけです。これでリンク元によってデザインを変えられます。

WordPress でヘッダーを読み込むには「get_header();」が使われますが、通常 header.php が読み込まれます。しかし、現在使用しているテーマフォルダに「header-design.php」というファイルをアップロードしておいて「get_header("desgin");」でヘッダーを読み込めば「header-design.php」が読み込まれます。

まとめると以下のようにすればリンク元によってデザインを変えられるわけです。

if($_GET['design'] == 1) $chk = 1;
if($chk == 1){
   get_header("desgin");
}else{
   get_header();
}

パラメーター付きURLがGoogleにインデックスされる可能性がある

パラメータ付き URL を使うと、パラメーター付き URL がインデックスされてしまう可能性があります。もしかしたら両方がインデックスされてしまう事もあり得ます。こうなると、重複コンテンツ扱いになったり Google によりペナルティを受けてしまう事もあります。これを避けるためには、最初からヘッダーに以下のタグを入れておきましょう。

<link rel="canonical" href="<?php echo get_the_permalink(); ?>" />

canonical は正式な URL を検索エンジンに伝えるタグです。パラメーター付き URL は除外してくださいよと最初から伝えておきます。「get_the_permalink();」は現在の表示しているページの URL を取得する関数ですが、パラメーターは無視されます。その為パラメーターなしの URL を正式な URL として設定する事ができるのです。

おわりに

php でリンク先に変数を送ってページデザインを分岐させる方法でした。しかし、ページデザインを変える程度にパラメーターに使うなら問題ありませんが、パラメーターは誰でも見られるという事に注意しなくてはいけません。例えば個人情報など見られてはいけない情報をパラメーターで分岐させる構造だと容易に第三者に見られてしまいます。パラメーターは誰でも変えられてしまいますからね。今回使ったパラメーターを変更しても特に何も起きないので大丈夫です。

  • Pocket

おすすめトピックス

関連記事

WordPress管理画面の固定ページの属性の中にテンプレートが表示されないのは何故?

WordPress の固定ページの新規作成画面にテンプレートのドロップダウンメニューがない事に気が付きました。固定ページのテンプレートとは、固定ページに独自のデザインを適用するためのものです。WordPress をカスタ […]

Stingerで特定記事だけAdsenseを表示しないようにする

このブログでも使っている WordPress の人気テーマ Stinger3 で Adsense を表示しないようにする方法を紹介します。Stinger5 でも同様です。 目次1 Adsenseを非表示にする必要性2 S […]

WordPressのパーマリンクを連番にしたいがあるカテゴリだけ除外したい

WordPress のパーマリンクを連番にする方法は既に様々なブログで取り上げられておりここでは割愛しますが、それに加えてやりたい事があったのでメモします。 それは基本的にはパーマリンクは連番にするが、あるカテゴリの投稿 […]

pasokon-pc
WordPressで投稿日時の年月日を別に取得する方法

WordPress には投稿日時を取得する関数 get_the_date() という便利なものがありますが、これだと年月日全てが表示されてしまいます。投稿年月日を年・月・日と別に取得する方法はないかと結構頭を悩ませたんで […]

wpX
WordPress専用超高速サーバー「wpX」へ移転で詰まった事

当ブログを WordPress 専用レンタルサーバー「wpX」へサーバー移転を行いました。高速サーバーを謳うレンタルサーバーはとても月額費用が高くてなかなか手を出せなかったのですが、wpX は月額1,000円(12ヶ月契 […]

YARPPの関連記事サムネイルのアスペクト比(縦横比)がおかしい時の修正方法

YARPP(Yet Another Related Posts Plugin)は有名なプラグインなので WordPress でブログやサイトを運営している人なら目にした事もあるでしょう。関連記事を表示してページ回遊を促す […]

著者について

名前:Azell
作曲したり風景写真撮ったりWeb制作したりする人です。 好きな事を楽しくブログに綴れていけたらと思います。

フォローはこちら

       

       
Illustratorでテキストをアウトライン化できない時に確認すること

Illustrator を使って印刷物などを作っている人ならテ

Gmailのエラー「Gmail requires one or more Google Play services that are not currently avaiable.」で開けない

あるいつもどおりの朝、スマートフォンで Gmail を開こうと

Amazonで自分の書いたレビューを一覧で確認する方法

世界的に最大級の通販サイト Amazon。私もよく使います。利

大垣カフェ「カフェ飯屋ピーナッツ」暖かく自然派なお食事が美味しいアットホームな場所でした

岐阜県大垣市の市民病院近くにオープンした「カフェ飯屋ピーナッツ

Illustratorで矢印に綺麗に境界線を付ける方法

Photoshop では矢印でも文字でも綺麗に境界線をつけるレ

→もっと見る