JACO-BASS » 制作

ひとに寄り添うデザインの追求

今時の WordPress サイト構築法 (スタイル編)

今回は、僕のスタイル編集について紹介します。前回の今時の WordPress サイト構築法 (テンプレート編)の続きですので、併せて読むと理解しやすいかもしれません。

まず、WordPress のテーマでは、テーマフォルダのstyle.cssというファイルにスタイルを記述するのが基本です。Sandbox では、構造をそのまま使えるのであれば、miyoshiさんの記事に書かれてあるように、テンプレートの継承を利用して、テーマを作成する方が望ましいのですが、商用サイトを作る場合は、どうしても構造を変更してしまう事がほとんどです。

ですので、あくまでベストの方法ではなく、僕の方法であるという事だけ先に述べておきます。

スタイル編集の下準備

では、先ずはディレクトリ構造を説明します。sandbox ディレクトリの中に、以下のディレクトリを作成します。

  • css - CSS ファイルを格納します
  • img - サイトデザインで使用する画像を格納します
  • js - サイトデザインで使用する JavaScript ファイルを格納します

よくある形ですが、この様なディレクトリを作成します。
そして、style.css には、

CSS:
  1. @import url("./css/default.css"); /* defalt style CSS */
  2. @import url("./css/reset.css"); /* browser default style resetting CSS */
  3. @import url("./css/hack.css"); /* CSS filters and browser specific CSS */
  4. @import url("./css/fonts.css"); /* YUI fonts CSS */

この様に記述しています。つまり、4つの CSS ファイルをインポートし、かつ古いブラウザには、クラッシュを防ぐために CSS を読み込ませないようにしています。

楽に、厳格に、そして未来を見据えてた CSS 管理

さて、4つのCSSですが、基本となるスタイルは default.css に記述します。これは、ブラウザによる差異を気にせず、CSS の仕様に従った正しいCSSを書きます。

次に、reset.css は、Eric Meyer氏の方法を参考に、多少手を加えたものを使っています。1ピクセルのずれも許せないWebデザイナのためにResetting Againという記事でも紹介されていますが、ブラウザ毎の特有のスタイルの差を取り除いてくれます。

hack.css は、ブラウザ独自のCSSバグを潰す為のCSSです。これについては、詳しく後述しますが、正しいスタイルとバグを潰す為のCSSを分けているのは、管理を容易にするのと、恒久的に正しく表示される様にする為です。

最後に font.css ですが、これは、YUI の Font CSS を利用させてもらっています。デザインによっては、px 単位でフォントサイズを指定する事も仕方ない場合がありますが、基本的には、フォントサイズを指定したくはありません。なので、折衷案として、font.css でブラウザ毎のサイズの差を無くして、%指定しようという方針です。

If you want this size in pixels (px) Declare this percent (%)
10 77
11 85
12 93 (was 93)
13 100
14 108 (was 107)
15 116 (was 114)
16 123.1 (was 122)
17 131 (was 129)
18 138.5 (was 136)
19 146.5 (was 144)
20 153.9 (was 152)
21 161.6 (was 159)
22 167
23 174
24 182
25 189
26 197

この表にあるように、YUI Font CSS を利用すると、100% で 13px になります。

ブラウザのCSSバグを潰す方法

CSS のブラウザ毎のバグを潰すのに、僕はCSS Browser Selectorを利用しています。これは、JavaScript でブラウザの判別を行ない、HTML の html 要素に、ブラウザやOSの名前のclassを埋め込んでくれるというものです。

例えば、Mac で Opera9 を使っている場合だと、class="opera opera9 mac js" となります。

default.css にこのように記述していているが、

CSS:
  1. div.post {
  2.   margin: 0 40px;
  3. }
  4. div#container {
  5.   margin: 20px 0 0 0; padding: 0;
  6. }

IE6 や IE7 のCSS解釈のバグで、ズレが生じた場合、hack.css に

CSS:
  1. .ie6 div.post {
  2.   margin: 0 20px;
  3. }
  4. .ie7 div#container {
  5.   margin: 0; padding: 20px 0 0 0;
  6. }

頭に .ie6 (もちろん html.ie6 でも良い) の様に記述する事によって、CSS 優先度の関係で、IE6 であれば、 .ie6 に書かれた内容に、IE7 であれば .ie7 に書かれた内容で default.css に記述されたスタイルを上書きしてくれるのです。

覚えておきたいテンプレートタグ

独自のJavaScriptを読み込む場合は、header.php にファイルパスを指定して読み込むのですが、ドメインを変更した場合でも一々修正せずに済むように、WPのテンプレートタグを使います。

PHP:
  1. <script type="text/javascript" src="<?php bloginfo('stylesheet_directory'); ?>/js/css_browser_selector.js"></script>

bloginfo('stylesheet_directory') は、使用しているテーマのディレクトリまでのパスを補完してくれます。

サイト画像も img タグで埋込む場合は、このテンプレートタグを利用した方が管理が楽になるでしょう。

同様の理由で、css で背景画像などを読み込む場合は、相対パスを使って指定するのが望ましいです。

CSS:
  1. div#header {
  2.   background: transparent url("../img/header.gif") center top no-repeat scroll;
  3.   color: #fff;
  4. }

の様に指定します。

まとめ

スタイルの編集やその管理については、色々な方法がありますが、多人数ではなく一人で管理する場合だと、これくらいが丁度良いと考えています。

大人数であれば、Subversion を利用するなどのバージョン管理を行ったり、CSS を更にモジュール毎に細分化したりなどが必要かもしれません。

さて、次回はどうするかまだ決ってませんが、プラグインあたりについてでも書こうかと思っています。ここを読んでくれている方で、何かリクエストがあればお気軽にお寄せ下さい。

この記事のタグ

関連記事

今時の WordPress サイト構築法 (テンプレート編)

今回は、僕のWordPressサイト構築のテンプレートデザインを紹介します。

WordPressがMovableTypeより便利だと感じる点として、テンプレートを編集した直後に、変更が反映されるという点です。

なので、制作側に関してはWPの方がよりスピーディーに開発できると思うのですが、WPのテンプレートはphpになっており、テンプレートタグ以外にも自分で関数を作ったりできるため、柔軟性が高いものの、構造を弄り過ぎると理解しにくくなる傾向があります。

今では、CSS + (X)HTML によるウェブデザインが浸透してきましたが、構造設計がずさんな場合、意味の分からないクラスやIDが乱発を招き、せっかくのMVCの分離の理念が崩壊してしまいます。

しかし、ひとつのサイトを作る度に、毎回いちから堅牢で柔軟性に富んだ構造を設計するのは大変ですし、時間もかかり過ぎてしまいます。ウェブ制作に慣れた人であれば、自分の構造パターンができあがっているかもしれませんが、僕はWPでサイト制作するのであれば、Sandbox テーマを元に構造設計を行なう事をお勧めします。

Sandboxは他のテーマと比べて何が違うの?

このテーマの最大の特徴は、自動的に分かりやすい class や id を適切に割り振ってくれる所にあります。

例えば、トップページであれば、body class="wordpress y2008 m06 d13 h10 home loggedin" の様に、
また、ブログカテゴリであれば、body class="wordpress y2008 m06 d13 h10 archive category category-blog loggedin" という class が body 要素にセットされます。

自動的に意味付けされた class や id がセットされるHTML要素は、bodydiv id="post-{n}"li id="comment-{n}" ({n} は WordPress システム内における id)の3つの部分です。

セマンティクスな class と id についての詳しい説明は、Miyoshiさんの記事Sandbox テーマSandbox 1.2をお読み下さい。

つまり、これを使えば、

CSS:
  1. .home div#header {
  2.   background-color: LightBlue;
  3.   color: Black;
  4. }
  5. .category-blog div#header {
  6.   background-color: LightGoldenRodYellow;
  7.   color: Black;
  8. }
  9. .page div#header {
  10.   background-color: LightGray;
  11.   color: Black;
  12. }

という様に、CSS だけでヘッダーのスタイルを自由に変更できます。このサイトも、背景画像を変える事で、トップとそれ以外のページでロゴのサイズを切り分けています。

サイドバーは Widgets で管理したい

サイドバーは、直接 sidebar.php を直接編集するよりも、せっかくテーマがWidgetsに対応しているのであれば、管理画面のデザイン > ウィジェットで管理したいです。

例えば、ホームとブログカテゴリと、それ以外のページで、サイドバーの表示を変更したい場合はどうすればよいのでしょうか。

それには、まず sidebar.php に簡単な分岐を入れてあげましょう。

PHP:
  1. <div class="sidebar">
  2.     <ul class="xoxo">
  3.    
  4. <?php
  5. foreach((get_the_category()) as $cat) {
  6. $cat_id = $cat->cat_ID ;
  7. break ;
  8. }
  9.  
  10. if ( is_home() ) {
  11.   if (!function_exists('dynamic_sidebar') || !dynamic_sidebar(1) );
  12. }
  13. elseif ( is_category('1') ) {
  14.   // category blog
  15.   if (!function_exists('dynamic_sidebar') || !dynamic_sidebar(2) );
  16. }
  17. elseif ( is_single() && $cat_id=="1" ) {
  18.   // single category blog
  19.   if (!function_exists('dynamic_sidebar') || !dynamic_sidebar(2) );
  20. }
  21.  else {
  22.   if (!function_exists('dynamic_sidebar') || !dynamic_sidebar(3) );
  23. }
  24. ?>
  25.     </ul>
  26. </div><!-- .sidebar -->

!dynamic_sidebar(1) というのは、現在のウィジットで選択できるサイドバー1 のことです。この例ではサイドバー3まで使用しています。

しかし、Sandbox テーマでは標準で2個のサイドバーしか使えませんので、3個目を使えるようにする必要があります。

サイドバーを増やすには、functions.php の370行目付近、

PHP:
  1. // Table for how many? Two? This way, please.
  2. register_sidebars( 3, $p );

register_sidebars() の数字を好きな数に変更するだけです。サイドバーを左右に設置したければ、sidebar-2.php というファイルを作成して、どのページでどのサイドバーを使うのかを指定して、

PHP:
  1. <?php get_sidebar() ?>
  2. <?php include(TEMPLATEPATH . '/sidebar-2.php'); ?>

テーマの中で、この様に呼び出せば、2本のサイドバーもウィジットで管理する事ができる様になります。class は div class="sidebar-2" とでもしておきましょう。

まとめ、Sandbox はまだまだ進化していっています

他のテーマと違い、出来上がったスタイルを提供するのではなく、カスタマイズし易い構造を提供してくれる SandboxはWordPressの成長に共なって、バージョンアップされています。

また、全く構造に独自の変更を加えなければ、Sandbox Designs Competitionというギャラリーに投稿できます。色々な作品を見て、インスピレーションを得るのにも大いに役立つでしょう。

次回は、スタイル編集についてもう少し掘り下げて紹介します。

この記事のタグ

関連記事

今時の WordPress サイト構築法 (インストール編)

最近、仕事でサイトを制作する場合、CMSを使う場合は僕の希望でWordPressを使う事がほとんどなのですが、ある程度ノウハウが溜ってきましたので、何回かに分けてその方法を公開していきます。

第1回は、インストール編です。

Subversion を使ったインストール

WordPress本体とプラグインの一部はSubversionを使ってインストールする事で、インストールと更新作業にかかる時間を大幅に軽減する事ができます。サーバに ssh でログインできて、svn コマンドを利用できる事が求められますが、最近のモダンなサーバではこれらを利用できる事がほとんどでしょう。

例えば、DreamHostCORESERVER(XREAもかな)には標準でSubversion がインストールされていますし、SAKURA Internetも自分でインストールする事で使えるようです。

さて、インストール方法についてはInstalling/Updating WordPress with Subversionというドキュメントが用意されていますので難しい事はありません。

一度やってしまえば一々ファイルをダウンロードして、FTPでアップロードする…という作業が馬鹿らしくなってしまうくらい簡単だと感じられます。

例えば、サーバのヴァーチャルホスト を利用して、www.example.com というサイトを作る場合、

CODE:
  1. $ mkdir www.example.com
  2. $ cd www.example.com
  3. $ svn co http://svn.automattic.com/wordpress/trunk/ .

というコマンドを打つだけで、数秒後に最新版のWordPressのインストールが完了します。
これだけだと、日本語表示ができませんので、日本語の言語ファイルもインストールします。

CODE:
  1. cd ./wp-content
  2. svn co http://svn.automattic.com/wordpress-i18n/ja/tags/2.5.1/messages/ ./languages

ここでは、この記事を書いている時点での最新版である2.5.1の日本語ファイルを例にしていますが、バージョンに応じて変更して下さい。

なお、日本語環境をオンにするには、wp-config.php を修正しておきましょう(基本的にはインストール後です)。

PHP:
  1. define ('WPLANG', 'ja');

続いてプラグインのインストールですが、Plugin Directoryに登録されているプラグインは全てhttp://svn.wp-plugins.org/のリポジトリに格納されていますので、ここに登録されているものは全て、本体と同様にSubversionを使ってインストールすることができます。

例えば、Google XML SitemapsContact Form 7 と 拙作の Limited Category Lists Widget をインストールするには、

CODE:
  1. cd ./plugins
  2. svn co http://svn.wp-plugins.org/google-sitemap-generator/trunk/ ./google-sitemap-generator
  3. svn co http://svn.wp-plugins.org/contact-form-7/trunk/ ./contact-form-7
  4. svn co http://svn.wp-plugins.org/limited-category-lists-widget/trunk/ ./limited-category-lists-widget

とするだけで、インストールが完了し、後はプラグインの管理ページで有効化するだけです。いちいちダウンロードしてアップロードするのに比べて、楽だと思いませんか?

Subversion を使ったバージョンアップ

バージョンアップする場合も簡単で本体の場合は、トップディレクトリで、

CODE:
  1. svn up

とするだけです。あとは、wp-admin/upgrade.php を実行しましょう。
言語ファイルは仮に本体のバージョンが2.5.2だとすると、

CODE:
  1. cd ./wp-content/languages
  2. svn sw http://svn.automattic.com/wordpress-i18n/ja/tags/2.5.2/messages/

となります。
プラグインは、各プラグインのディレクトリに移動して svn up コマンドを実行します。例えば、Google XML Sitemaps の場合であれば、

CODE:
  1. cd ../plugins/google-sitemap-generator
  2. svn up

で更新が完了します。

ファイルをダウンロードして解凍してアップロードして…という旧来の方法であれば、ファイルを送受信している時間だけで何分もかかっていたところが、この方法だと数分以内に完了できますので、Subversion が使える環境の人は利用しない手はないでしょう。

まとめ、シェルスクリプトを使いましょう

これら、svn コマンドを使ったインストール作業は、非常に簡単ですが、同じコマンドを何度も打つのも面倒な作業に違いありません。

そこで、例えば以下の様な単純なシェルスクリプトを用意して、インストール作業は勝手にしてもらう事にしておいた方が楽でしょう。

CODE:
  1. #!/bin/bash
  2. svn co http://svn.automattic.com/wordpress/trunk/ .
  3. cd ./wp-content
  4. svn co http://svn.automattic.com/wordpress-i18n/ja/tags/2.5.1/messages/ ./languages
  5. cd ./plugins
  6. svn co http://svn.wp-plugins.org/google-sitemap-generator/trunk/ ./google-sitemap-generator
  7. svn co http://svn.wp-plugins.org/contact-form-7/trunk/ ./contact-form-7
  8. svn co http://svn.wp-plugins.org/limited-category-lists-widget/trunk/ ./limited-category-lists-widget
  9. svn co http://svn.wp-plugins.org/popularity-contest/trunk/ ./popularity-contest
  10. svn co http://svn.wp-plugins.org/popularity-lists-widget/trunk/ ./popularity-lists-widget
  11. svn co http://svn.wp-plugins.org/all-in-one-seo-pack/trunk/ ./all-in-one-seo-pack
  12. svn co http://svn.wp-plugins.org/search-tags/trunk/ ./search-tags
  13. svn co http://svn.wp-plugins.org/ultimate-google-analytics/trunk/ ./ultimate-google-analytics
  14. svn co http://svn.wp-plugins.org/wordpress-navigation-list-plugin-navt/trunk/ ./wordpress-navigation-list-plugin-navt
  15. svn co http://svn.wp-plugins.org/top-level-cats/trunk/ ./top-level-cats

このような内容を installWP.sh のような名前を付けて保存し、インストールしたいディレクトリにコピーします。そして、ファイルに実行権を与えます chmod 777 installWP.sh

あとは、./installWP.sh の様に実行するだけで、自動的にインストールしてくれます。

わずらわしい作業に時間を奪われる事なく、サイト制作に時間を使う事ができるというわけです。

次回はテンプレート編です。

この記事のタグ

関連記事

デスクトップ型アクセス解析 Woopra

woopraのスクリーンショット1

サイトのアクセス解析と言えば、今では Google Analytics が一般的になってきましたが、最近になって新たな対抗馬が注目を集めています。その名も Woopra です。

現在、ベータテストが行われていますが、一日のページビューが10,000以下のサイトだけとなっており、登録してから、1〜3週間くらいで利用開始できます。

他のアクセス解析と比べて、Woopra 最大の特徴は、デスクトップアプリケーションが用意されている点と、リアルタイムでアクセス解析してくれる点です。

リアルタイム解析を利用して、ユーザビリティーの向上へ

woopraのスクリーンショット2

リアルタイムのアクセス解析情報はLiveタブを開いたページに表示され、どの要にサイトを辿っていっているか表示されます。

ブログベースのサイトではあまり効果はないかもしれませんが、ショッピングサイトであれば、どの様にサイトのナビゲーションが機能しているのかが把握しやすいので、ライブ解析は非常に効果的でしょう。

ログのみの解析では、あくまで予想の範囲でユーザーの行動を評価するしかありませんが、Woopra のライブ解析を利用すれば、滞在時間も考慮したスマートな解析が可能となるでしょう。

Woopra と Skype を組み合せれば、離れた場所にいるユーザーの方に協力してもらい、綿密なユーザーテストが可能となります。

ウェブサイトは実際の店舗と比べて、改善が滞りやすいものですが、 こちらからユーザーをナビゲートできないウェブサイトは、実際の店舗よりも改善や工夫が必要です。

そのための対策として、アクセス解析はフィーリングと違い、明確な数字を挙げてくれる重要な情報になります。

顧客を逃さないためにも、シビアなサイトチューニングを日々繰り返していく必要があるのではないでしょうか。

この記事のタグ

関連記事

Web で成功するには、ウェブ活動をせよ。

前回は、Amazon がいかにして商品ページへのリンクを増やし、検索上位に表示されるようにしたかを説明しましたが、最後にその方法は確かな技術力がなければ真似できないので、もっと手軽にできる方法はないのか?という疑問で締めましたが、今回はその答えについての記事です。

ミュージシャンに例えて説明すると

それでは、ミュージシャンはどの様にして売れていくのかを例に挙げて説明しましょう。

ミュージシャンは自分達の音楽を多くの人に聞いてもらいたいわけですが、そのためには何をすれば良いのでしょうか?

  • 良い曲を作る
  • 演奏をする
  • 宣伝をする

大きく分けるとこの3つが挙げられるかと思いますが、これらを全部ひっくるめて言うなれば、音楽活動をしているという事になります。とてもシンプルですね。

ミュージシャンは総じて、音楽に関する活動を続ける事で成功していると言っているわけですが、Web で物事を成功させたい場合も同じ事が言えます。

  • 良いサイトを作る
  • サイトを使ってもうらう
  • 宣伝をする

これらを、全部ひっくるめて言えば、ウェブ活動をしているという事になるのです。これはどういう意味なのでしょうか。

ウェブ活動って何?

どの分野にも同じ事が言えますが、ある分野で一流になるには、当然ながらその世界での活動に従事する必要があります。

ウェブの世界での活動に従事すると言う事は、ウェブに触れる時間を多く持つという事です。ウェブはインタラクティブであり、フレキシブルです。常に変化が求められていて、新しいモノに貪欲です。

Amazon というと、既にナンバーワンの知名度を持つECサイトですが、その見た目や機能はまだまだ進化を続けています。Amazon ですら成長を続けている現状であって、まったく進歩しないECサイトは時代に取り残されていくだけかもしれません。

また、アメリカ民主党の大統領候補であるバラック・オバマ候補は、予備選が始まる前に多くのアナリストが彼は資金集めの段階でリタイアするだろうと言われていましたが、実際には、1ヶ月で$32M(33億円)という過去最高の金額を集めるという偉業を成し遂げ、圧倒的有利とされていたヒラリー・クリントン候補と大接戦を演じました。

なぜこの様な事になったかというと、彼の選挙事務所が様々なウェブサービスを通じて毎日プロモーションを行ない、更には支援者が支援活動をするためのソーシャルネットワークサイトを設けるなど、考えうる限りウェブを使い倒した結果からなのです。

こういった様に、ウェブの世界では、ウェブの世界で活発に活動する事が成功に繋るというわけです。

ウェブは金のなる木ではない、努力の貯金箱である

サイトを作ったが、ほとんど更新せずほったらかしにしているとか、自社サイトをまともに使った事がないとか、更には生活の中でネットを使う事があまり無いとか、ウェブを使って何かしたいという企業や事業者なのに、この様な状況になっていないでしょうか? それは、ミュージシャンなのに、まったく音楽に触れていないと言う事と同じではないでしょうか?

色々と参考にしようと、サイトを覗いたりして調べるのはもちろん結構な事ですが、それだけで満足してはいけません。音楽の良さは聞いてみないと分からない様に、サイトの良さも実際に使ってみて初めて分かるのです。

サイトを運営するのであれば、それは実際の店舗と同じ様に、成功するための努力をしなければなりません。店舗に店員がいなければ営業できないのと同じで、ウェブサイトも更新や管理をするための人員(もちろん、教育が必要なのは言うまでもありません)がいなければ、まともな運営はできませんし、成長もしなければ利益が出るはずがないのです。

インターネットバブルが終わり、実力がものを言う時代になってきて、Web2.0 という流行り文句も現実の努力が伴わなければ、張子の虎に過ぎない事が誰の目にも明かになってきたわけですが、お金をかければ良いのではなく、あくまで自分達の活動次第で成否が決まります。

つまり、ウェブは金のなる木ではなく、努力を貯める事で利子がついて返ってくる貯金箱なのです。

この記事のタグ

関連記事

back to top