久々にWordPressのコト。
あるページに対して、ある特定のリンクボタンから飛んできた場合だけデザインを変えて表示する方法。
動作の概要
【 1 】入り口となるある特定のリンクURLに、パラメータを埋め込んでおく。
【 2 】表示をどうこうしたいページに、パラメータがついている時だけデザインを変えるために、条件分岐でIDを付与する。
手順(コード)
function.phpに、キーを追加するためのフィルターフック
$public_query_varsにキーを設定する記述です。
これを記述しておかないと、パラメータのやりとりができません。
[php] //---------------------------------------- //キーを追加するためのフィルターフック //---------------------------------------- //$public_query_varsに、キーを渡す function add_meta_query_vars( $public_query_vars ) { //$public_query_vars に、'param01'というキーを追加。 $public_query_vars[] = 'param01'; return $public_query_vars; } //add_meta_query_vars関数を実行 add_filter( 'query_vars', 'add_meta_query_vars' ); [/php]
ある特定のリンクに、パラメータ付きのURLを表示させる
[php] <li> <a href="<?php //キーに対する値を配列にしておく $query = array( 'param01' => 'rec01' ); echo add_query_arg( $query, bloginfo(url) ); ?>" title="パラメータ付きURL">パラメータ付きURLリンク</a> </li> [/php]
上記のソースコードは以下の様に書き出されます。
[html] <li> <a href="http://hoge.com?param01=rec01" title="パラメータ付きURL">パラメータ付きURLリンク</a> </li> [/html]
header.phpで、パラメータを取得するようにする
パラメータ付きで表示されたページでデザインを変更するために、
渡されたパラメータを取得します。
headタグ内に、
[php] <?php //URLとして渡されたパラメータを取得し、 //$par01という変数に入れておく。 $par01 = get_query_var('param01'); ?> [/php]
取得したパラメータをbodyタグにIDとして埋めることによって、CSSでデザインを制御します。
[html] <!------------------------------------- //bodyタグにIDでパラメータ付与 -------------------------------------> <?php //bodyにID設定 $body_id =""; <!--フロントページの時--> if ( is_front_page() ) { $body_id = 'id="'.home.'"'; } <!--パラメータが入っている時--> else if ( !empty($param01) ) { $body_id = 'id="'.$par01.'"'; } <!--個別ページ・固定ページの時--> else if ( is_single() || is_page() ) { $body_id = 'id="'.$post->post_name.'"'; } <!--それ以外--> else { $body_id = 'id="top '.$par.'"'; } ?> <body <?php echo $body_id; ?> <?php body_class(); ?>> [/html]
私はこうやって使ってマス
私は、1つのサイト内で、カテゴリや階層でデザインを変えてるようなサイトでこれ使ってます。
例えば、『個人情報の取扱い』とか『会社概要』とか、全く同じ内容のページの時とかに、使ってます。
titleタグとか条件分岐でいろいろやる必要はありますけど、
更新の際に1ページの修正だけで済み、手間が省けますし、
何よりコンテンツの重複もSEOには良くありませんしね!
[itemlink post_id="1481"]
[itemlink post_id="1482"]