この記事は2年以上前に書かれた記事です。現状にそぐわないかもなのでご注意を。

バナーからリンクされる特設ページを作る

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> にクラスを割り当てるなどとして、スタイルシートを適宜設定するといいでしょう。

以上で完了です。
このように本文に使用しない画像を記事に紐づける場合は、カスタムフィールドが非常に便利かつ応用がきくので、覚えておいて損はないでしょう。

スポンサーリンク