WordPress を汎用のCMSとして使う場合、以下のような仕様の特設ページを作成する必要がある事があります。
- キャンペーン等のような強力にプッシュしたい特設ページを単独で作成
- 特設ページへのリンクとして、全ページにバナー画像を配置
そういった場合のカスタマイズ方法の一例として、私の行ったカスタマイズを簡単にご紹介します。
特設ページ専用カテゴリーの作成
特設ページ専用のカテゴリーを管理画面の『投稿>カテゴリー』から作成します。
カテゴリーを作成したら、カテゴリーIDを確認しておきます。
以下、特設ページ専用カテゴリーのIDが 10 だったと仮定して説明します。
このカテゴリーはサイドバーのカテゴリー一覧メニューには表示したくないので、使用中のテーマの sidebar.php のカテゴリー表示タグ [wp_list_categories();] の引数に [exclude=10] を追加して非表示に設定します。
特設ページへのリンクバナーのページへの関連付け
特設ページを『投稿>新規追加』から作成します。
リンクバナーを適切なサイズで作成し、投稿画面のアップローダーからアップロードします。
(本文に挿入する必要はありません。)
※画像の格納先として『wp-content/uploads』を設定し、年月ベースのフォルダは作成しない設定にしてある事を前提とします。
これは管理画面の『その他の設定』で設定・確認できます。
カスタムフィールドに『banner』をkey名とし、アップした画像名を値として登録します。
keyで指定したカスタムフィールドの値を取り出す
以前の記事で紹介したように Get Custom Fielde Values というプラグインを使ってもいいのですが、このためだけにプラグインを導入するのも面倒なので、今回はプラグインを使用せずにカスタムフィールドの値を取り出します。
使用中のテーマの function.php に以下のコードを追加します。
function getCustom($key,$id) { $custom = get_post_custom_values($key, $id); if(count($custom)!=1) return implode("<br />",$custom); else return $custom[0]; }
これは、WebTecNote さんの記事を参考にさせていただきました。
サイドバーテンプレートのカスタマイズ
サイドバーにリンクバナーが表示されるよう、使用中のテーマの sidebar.php をカスタマイズします。
sidebar.php に以下のコードを追加します。
<?php if (have_posts()) : query_posts('cat=10'); ?> <ul> <?php while (have_posts()) : the_post(); ?> <li><a href="<?php the_permalink() ?>" title="<?php the_title_attribute(); ?>"><img src="<?php bloginfo('url'); ?>/wp-content/uploads/<?php echo getCustom('banner',get_the_ID()); ?>" alt="<?php the_title_attribute(); ?>" /></a></li> <?php endwhile; ?> </ul> <?php endif; ?> <ul>
リンクバナー周辺のデザインをカスタムする場合は、上記の <ul> にクラスを割り当てるなどとして、スタイルシートを適宜設定するといいでしょう。
以上で完了です。
このように本文に使用しない画像を記事に紐づける場合は、カスタムフィールドが非常に便利かつ応用がきくので、覚えておいて損はないでしょう。