このブログは今後は更新されません。FE.labsにてWordPress向けの記事も更新してゆきますのでよろしくお願いします。
今後このドメインは、ファーストエレメントのWordPress関連業務のブランドサイトとして近くリニューアルする予定です(2012/8/24)。
カテゴリ&タグ&カスタムフィールド&年月&キーワードで絞り込み検索ができるプラグイン『FE Advanced Search』

CMSとしてのWordPress

みやざわ Comm(6)

WordPressとは、非常に多機能かつ無料のブログアプリケーションの名称。同類のものとして、有名な「MovableType」がある。

WordPressの概要は前回の記事

WordPressとは?」にて

今回は、その多機能ぶりをより深く解説できればと思います。

■ブログのURL形式を自由に変えられる

パーマリンク構造に柔軟性がある。デフォルトでは「http://www.○○○○.com/?p=123」のような形式だが、「http://www.○○○○.com/カテゴリ/記事ナンバー.html」 のように見せかけることもできる。

permalink_01.png

WordPressでは、見やすい、美しい、そしてSEOも考慮したURLを自分なりに設定でき、WordPressは内部的にそのURLを変換してデータベースから記事データを引き出している。

■再構築がいらない

WordPressは記事を投稿/更新する際に「再構築」ということが行われない。記事ごとにHTMLファイルを構築するのではなく、ページへのリクエストがある毎にデータベースから記事データを引き出している。だから構築も何もない。

Webサーバー上には、トップ階層の「index.php」ファイル(とアップロードしたWordPressのファイル)以外はサーバ上に存在しない。1000ページ分の記事を投稿しても、それらはMySQLのデータベースのテーブル上に収まっていて、記事へのリンクをクリックするとデータベースから記事データが呼び出されて、指定されたテーマ(theme)のテンプレートファイルに流し込まれて、画面上に表示される。

レンタルサーバーに用意された「phpMyadmin」などのツールでMySQLデータベースの中を見ると、エクセルのシートのように、記事データが整然と並んでいる。

結果として、投稿や編集の度に再構築で待たされるストレスがない。再構築エラー、というのもない。

一方で、一般的に、再構築によって生成された静的なHTMLページへのアクセスのほうが、WordPressのように常にデータベースとやりとりしながら動的にページ生成する方法より、表示速度が早いとされる。

特にポータルサイトのように1ページの中にたくさんの記事を並べるようになると、必然的にデータベースへの問い合わせ回数も増えるわけです。しかし、そういう時に便利なプラグイン(拡張機能)が用意されています。「WP-Cache」というプラグインはその名のとおり、一度アクセスのあったページの内容をそのままキャッシュ(一時的な静的HTMLファイル)として保存し、2回目以降のアクセスにはそのキャッシュファイルを表示させることで、表示速度を早くすることができます。サーバの負担も減ります。また、ページ自体のキャッシュファイルを生成するのではなく、データベースへのクエリをメモリ上にキャッシュするXCache for WordPress 0.6eAccelerator for WordPress 0.6といったプラグインもあります。これらのプラグインを使えば、再構築のいらない動的なサイトとMTのような再構築型の”いいとこどり”ができる(と考えています)。

■プラグインが豊富

下記サイトからあらゆるジャンルのプラグインがダウンロードできる。英語サイトでありほとんどのプラグインの解説・管理画面は英語だが、多くは日本語環境でも問題なく使える…あるいは多少のカスタマイズで使える。

WordPress Plugin Database

Plugins Hosted On wp-plugins.org

WordPress Plugins/JSeries(日本語サイト)

プラグインによって、phpファイルに初期設定を書き込むもの、管理画面からすべて設定するものなど様々だけれど、たとえばメールフォームや掲示板CGIの設定をしたことがあれば同じかそれ以上に簡単。日本以外で開発されたものでも、ソースコードをたどって、該当部分を英語から日本語に打ち直せばそのまま日本語表記に直すことができる場合も多い。その場合、自分のブログの文字コードに合わせてプラグインファイルを保存しないと文字化けする。

今後、有益なプラグインはこのサイトで紹介していきますが、例えば以下のようなことがプラグインで可能であり、WordPressの応用範囲が広がると思います。

・ログイン画面のカスタマイズ

・カスタムフィールド(いわば自由欄)の有効活用

・ユーザーレベルごとにアクセスできる管理画面の制限

・タグクラウド(SEO的にも有効)

・AdSenseのシェアリング(共同運営の場合の利益分配)

・サイト内の関連記事自動リンク

・GoogleMapの組み込み・記事ごとにMap表示ボタンを自動追加

・RSSデータの記事内、テンプレート内への流し込み

・記事の表示期間(公開・非公開)の設定

・記事ごとの閲覧数表示(アクセスカウンター)

・携帯から投稿/閲覧

・メールから投稿

・ショッピングカート機能の組み込み

・投票/レーティング

・新着記事をメールでお知らせ(紹介済み)

・Googleサイトマップファイル自動作成

・記事のランダム、新着、更新、コメント一覧(紹介済み)

・ビジュアルリッチエディタの組み込み(紹介済み)

・投稿画面内でのPHPの実行

・GoogleSitemapの生成

・記事ごとのhead内metaタグ生成

・パンくずリスト

■テンプレートのカスタマイズが自由度抜群!

プラグインで探すのと、テンプレートカスタマイズで解決するのとどっちが早いか、どちらがフレキシブルか、悩むことが結構あります。そのくらいカスタマイズ自由度が高い、と感じさせてくれます。例えばtitleの見せ方も、トップページでは「ブログタイトル」、個別ページでは「記事名 | カテゴリ | 省略ブログタイトル」 、Pageで作成した記事は個別に書き込みなど、is_single()、is_page()などの「コンディショナルタグ」を使って、1つのヘッダテンプレートでもサイト内のセクションに応じてtitleの見せ方を変えることができます。メンテナンス作業が軽減されるのでサイト規模が大きくなるほど重宝します。

また、WordPressのテンプレートはコンポーネント化(パーツ化)されています。先に述べたヘッダテンプレート「header.php」は、いわばボディテンプレートの「index.php」の上部に<?php get_header(); ?>と書くだけで呼び出されます。サイドバーも同様に<?php get_sidebar(); ?>と書けば流し込むことができます。なので複数のテンプレートにサイドバーが設置されていても、このサイドバーテンプレート「sidebar.php」を修正するだけですべてのページのサイドバーが更新完了します。

さらには自分で自由にページ丸ごとでもページの一部でも自分でテンプレートを作り、それを他のテンプレートに読み込ませることができます。たとえば左サイドバー用テンプレート「sidebar_left.php」をつくり、index.phpファイルの先頭でヘッダテンプレート読み込みのあとに<?php include (TEMPLATEPATH . ‘/sidebar_left.php’); ?>として左サイドバーを読み込み、index.phpファイルの最後に標準のサイドバー「sidebar.php」を読み込ませれば、ダブルサイドバーのページを作成できます。

これ以外にもまだまだテンプレートの使い方次第で、どんな複雑で多機能なサイトでも、極力メンテナンスの手間を省くことができます。豊富なプラグインとこのテンプレートのカスタマイズの自由度により、ふつうのHTMLサイトをつくる理由・魅力がなくなってしまいました。私は最近は、自社サイトもお客様のサイトもほぼ100%、WordPressだけで制作しています(たまにMovableType、XOOPS)。いわゆるビジネスブログ/CMSなわけですが、ショッピングサイトもフォトギャラリーもポータルサイトもクチコミサイトもWordPressで制作しています。

さらにSQLのクエリが書ける人は、MySQL上のテーブルに格納されたWordPressのすべてのデータを自由に呼び出すことができるので、もうほとんど不可能はないのではないか?と思わせます。一から機能をつくらなくても、既存のプラグインにプラスαのカスタマイズを施し、データベースから取り出した文字列/数値を加工して足したり引いたりして、それをテンプレートタグの引数に入れたり、HTMLの一部に埋め込んだり…CSSによるデザインを徹底すれば、サイトデザインも、もちろん内部的な機能も自由自在です。

■カスタムフィールドの存在

これがなければ「CMSツールとして」のWordPressの魅力は70%…いやもっと減っていたでしょう。上記のような魅力が十分あるのですが、このカスタムフィールドがあることで(大げさな話)数百万するCMSアプリに競合することだって可能になります! (…いや、そういう高価なCMSを実際に使ったこともないのにそんなこと言ってはいけませんが)

テンプレートタグthe_metaを使っているかぎりはこの機能は何の役にも立ちません…ただのオマケのようで。しかしget_post_meta()を使えば…他にも呼び出し方がありますが…例えばシゴトの森のような求人サイトや不動産検索サイト、飲食店ガイド、その他地域情報サイトがWordPressを使って構築できるようになります。この機能と複合条件検索(AND検索、絞り込み検索…ウチでは独自につくりましたが)を使えば立派なポータルサイトの完成です。

■結局のところWordPressのメリットは

もしそこそこの規模のポータルサイトを”1から”つくろうとしたら…数百万~1千万越えることだってあるのを、WordPressというベースとなる超高機能な母艦があるおかげで、それらに匹敵するぐらい高機能なものを数分の1~数十分の1のコストにすることができる。

そして、今までポータルサイトのような大規模でテクニックのいるものは荷が重かった中小Webサイト事業者、特にデザインはできるけどプログラム関係は苦手な事業者でも、少しがんばればポータルサイトのような領域まで業務範囲を拡げることが出来る。

(これは私の印象ですが)ポータルサイトをオープンソースプログラムで、という時の選択肢として「XOOPS」という素晴らしいプログラムがありますが、デザイン的な自由度はWordPressの方が高いと感じました。「ブログツールなのにブログらしくないデザイン」というのは、CSSをフルに使ったWebデザインを日頃している人ならすぐにできるでしょう。

それから、WordPressはPHPでつくられています。なので、もしWordPressに足りない機能があれば、PHPの関数を、その場でなんの準備もなく、シームレスにWordPressのテンプレートタグやWordPress独自の関数と併用することができます。

申し訳ありません、あまりきれいにまとめた文章ではないので読みにくかったかと思います。

もしWordPressで自社サイト制作やポータルサイト構築をお考えでしたらファーストエレメントがお手伝い致します。ここ数年、ほぼ100%、WordPressに入れ込んでおります。テンプレート構築、プラグイン設置代行、など部分的な作業も相談に応じます。

このエントリーをはてなブックマークに追加

6件のコメントがありますコメントのRSSフィード

  1. [...] CMSとしてのWordPress [...]

  2. みやざわ より:

    kamoshikaさんご質問ありがとうございます!しかし回答が遅くなりまして…

    >wordpressがインストールされているデータベースにテーブルを追加してそれを読み込むなんてことはできるのでしょうか?

    結論から言えば可能です。どこまでWordPressと統合するかによって、難易度というか求められるスキルは上がると思いますが…
    たとえば単純な話、WordPressがインストールされたデータベースのテーブル群に、4つのカラムを持つ「wp_test」というテーブルを追加して、そのすべての値を取得して表示する場合、以下のような記述でデータを取り出す事はできます。

    ————————————
    < ?php
    $sql = "SELECT * FROM wp_test";
    $value =$wpdb->get_results($sql);
    foreach($value as $data):
    echo $data->test01;
    echo $data->test02;
    echo $data->test03;
    echo $data->test04;
    endforeach;
    ?>
    ————————————
    ※余計なものは省いてシンプルに書いています。

    「wp_testというテーブルからすべてのカラムをセレクト」というSQLのクエリを書いて、それを$wpdb->get_results()の中に代入してやれば、データベースから値を取り出せます。
    追加したテーブルがどこまでWordPressと有機的に絡んでいくかで必要なコードは変わってきます。

    参考になるとすれば、独自にテーブルを拡張する類いのプラグインのソースコードを眺めることだと思います。

    いずれにしても、WordPressの構造を理解して、SQLのクエリを書けるスキルがあれば、かなり自由度は高いと思いますよ( ^ ^ )

  3. [...] CMSとしてのWordPress【WordPressカスタマイズメモ】 [...]

  4. ayk より:

    いつもサイトを拝見させていただいております。大変勉強になります。
    さて、質問ですが、既存のホームページの一部をWordpressに変更したいと考えています。
    具体的にいいますと、Wordpressを最新情報として活用する予定で、
    その最新情報の記事(最新5件)を既存のホームページ(静的ページ)の
    トップに表示したいと思っております。
    こういったことは可能なのでしょうか。
    可能な場合、どういった方法で設定をすればよろしいでしょうか。
    お忙しいところお手数ですがご教示頂ければ幸いです。
    よろしくお願いいたします。

  5. みやざわ より:

    aykさん

    この場合、WordPressが吐き出すRSSを、
    静的ページ側に埋め込んだJavaScriptで表示するのが一番手軽だと思います。
    「JavaScript RSS」等のキーワードで検索するといろいろ見つかると思いますよ。

    ちょっと古くて更新されていないので不安もありますが、下記のようなCGIもあります。
    昔よく使っていました。
    http://www.daikoku-ya.org/blog/2005/12/29/

  6. Yuriko.Net より:

    wpplugins.jp がドメイン失効していた

    wpplugins.jp のドメイン情報
    かつて、WordPress のプラグイン情報を日本語で発信していた「WP Plugin DB JAPAN」(リンク先ははてなブックマーク) が、いつの間にかドメイン失効していました。現在…

コメント/質問お待ちしています

トラックバックURL:
http://wpcms.jp/cms%e3%81%a8%e3%81%97%e3%81%a6%e3%81%aewordpress/trackback/

CATEGORY

ARCHIVE

2017年9月
« 12月    
 12
3456789
10111213141516
17181920212223
24252627282930