*

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でカテゴリ別人気記事を表示できない時に確認する事【Popular Posts】

WordPress の人気記事表示プラグインと言えば「WordPress Popular Posts」が有名です。手軽に人気記事をサイドバーを含め自由な場所に設置できるので大変重宝するプラグインです。 調べてみると Wo […]

WordPressで記事ごとにページビュー(アクセス数)を表示する方法

WordPress でブログやサイトを運営していると、どの記事がどの程度読まれているのか?という事が気になってくるものでしょう。それを調べる為にはアクセス解析や Google Analytics といったようなツールを利 […]

WordPressのメンテナンス中プラグインを入れても管理者もサイトが見られない場合

WordPress で作っているサイトをリニューアルするために同じサーバーで大改修を行う場合、そのまま行うとリニューアル作業中の状態もサイトを訪れた人に見られてしまうのでそれではちょっと問題です。サイトを訪れた人には「た […]

WordPressでログイン時だけ表示する条件分岐を行うには?

WordPress では色々条件分岐があります。トップページだけ、カテゴリページだけ、固定ページだけ、単一記事ページだけ等、様々な条件分岐を行って表示を制御する事ができます。 WordPress でサイトを作っているうち […]

wordpress
今何記事目?WordPressで公開記事数を表示する

WordPress で公開記事数を調べたければ管理画面(ダッシュボード)に行けばすぐにわかっちゃうのですが、サイト上に表示したいという人もいるかもしれません。 ブログならそんなに記事数をわざわざ閲覧者にアピールする必要も […]

WordPress管理画面の投稿一覧で表示される投稿数を変更するには

WordPress の管理画面と言えば、WordPress でブログやサイトを運営しているなら必ず目にするものですが、投稿一覧に表示される記事の数を変更する必要がありました。普通にブログを書くだけなら、投稿一覧の記事数な […]

著者について

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

フォローはこちら

       

       
IoT時代に必要なスキルを徹底分析、必要な3つの事とは?

IoT と聞いて何を思い浮かべるでしょうか。スマートスピーカー

Photoshopでアルファベットが大文字しか打てない時に確認する事

Photohsop で作業中ある異変に気が付きました。それはア

松本市のクレープ専門店「クレープ工房」モチモチ食感がくせになる

長野県松本市にクレープ専門店の「クレープ工房」があります。クレ

中野市のうどん専門店「田りた麺之助」で美味しさに衝撃を受けた

長野県に行ったら食べたいものと想像するのはやはり信州そばではな

志賀高原の池めぐりコースをトレッキングする時の駐車場や帰りのバスについて

大自然の山々や湿原を散策するのが好きで長野県の志賀高原へ行って

→もっと見る