【静的】 Wordpress とテンプレート化したPHPサイトの違い 【動的】
WordPress のテンプレートを改変したり、一からテンプレートを作成していてわかったのですが、WordpessはPHPで動いています。
テンプレートもテンプレートを読み込むのもPHP。
データベースからデータを引っ張ってきて表示するのもPHPです。
では、PHPでテンプレートを読み込んだサイトとはどう違うのでしょうか?
WordpressとPHPでテンプレートを読み込んだサイトとの違いについて書いてみました。
コメントの有無
PHPでテンプレートを読み込んだサイトでは、コメントを書込みできません。
また、コメントを読み出すこともできません。
でも、Worpdress ではコメントを許可するようにしておけば、コメントの書き込みも、データベースに保存したコメントデータの読み出しもできます。
ただし、コメント機能が付いているぶん、サーバーに負荷がかかりやすく、ページの表示が重くなりやすいです。
また、ハッキングされるリスクも高まります。
カテゴリの追加や削除の自動化
Wordpressでは、カテゴリの追加や削除がツールから自動で行えます。
でも、PHPのテンプレート化したサイトでは、自分でHTMLタグを弄ってカテゴリページにリンクを追加しなければいけません。
ただし、静的ファイルでカテゴリの追加と削除を行いますので、カテゴリーページのリンク構成の変更が比較的容易です。
WordPressでも、カテゴリーページのカスタマイズで静的なHTMLファイル並にカスタマイズできなくもないですが(私自身、実際にテストブログでカスタマイズできるカテゴリーページを作成できましたし)、非常に面倒くさくなる点が問題です。
(静的ページ並に一々カテゴリページを変更しないといけない)
Wordpressのカテゴリーの分岐例
カテゴリー毎に読み込むファイルを変更します。
ファイルには、各カテゴリのリンクを自力で書いておきます。
(この作業がとてつもなくめんどくさい上に、カテゴリーが増えるとファイル数がドンドン増えていく)
<?php
// カテゴリースラッグが******なら、******.php
if ( in_category('******') )
{include(TEMPLATEPATH . '/category/******.php');}
// カテゴリースラッグが@@@@@@@なら、@@@@@@@.php
else if ( in_category('@@@@@@@') )
{include(TEMPLATEPATH . '/category/@@@@@@@.php');}
// 何もなければ default_category.php
else
{include(TEMPLATEPATH . '/category/default_category.php');}
?>
URLの自由度
Wordpressでイライラしたことの一つに、『 URLの自由度の低さ 』 がありました。
カテゴリーページや個別URLを自分の好きなように決めたかったのですが、そうは問屋が降ろさない状態でした。
確かに、プラグインを使えばかなりのカスタマイズはできましたが、カスタマイズし忘れたままページを作成してしまった場合、それが検索結果に載ってしまうと、放置プレーしてなかったことにしてしまうか、後で htaccessファイルでリダイレクト処理しないといけなくなってしまいます。
プラグインの中にはセキュリティ上の問題があるものがありますし、バージョンがアップするとプラグインが使えなくなってしまうこともありますので、プラグインでURLを変更するのは不安でした。
その点、ファイルをサーバーにアップロードして初めてURLになるPHPでテンプレート化した静的サイトでは、そう言うイライラはありません。
ただし、ファイルを自力で作成しなければならないので、ローカルのパソコン内にファイルが山のようにできてしまいますし、自力でサーバーに一々アップロードしなければなりません。
自動改行や自動変更の有無
複数改行の自動変更やソースの自動変更も、Wordpressでイライラしたことの一つです。
確かに、WEBサイト作成ツールでも自動変形や自動変更されるのですが、これは 『 ツールの設定を変更 』 すればOKです。
タグやコードを打ち込んだら、だいたいその通りに保存してくれますし、ツールの設定を後から変更しても、今まで作成したファイルに影響は与えません。
でも、Worpdessでは 『 今まで作成したページの自動改行や自動変更が変更 』 されてしまうことがあり、これが自動改行や自動変更の設定の変更の妨げになりました。
一度グチャグチャになると、ページ数がページ数なだけに修正が困難なので、怖くてできないのです。
(やろうと思えばできなくはないですが、もうすでに数千ページあるページファイルの変更は非常に困難です)
function.php を直弄りすると自動改行や自動変更を停止できましたが、テキストエディターしか出来ませんでした。
(ビジュアルエディターに切り替えると、自動改行や自動変更されてしまう)
<?php // オートフォーマット関連の無効化
add_action('init', function() {
remove_filter('the_content', 'wpautop');// 自動形成しない
remove_filter('the_content', 'wptexturize');// wptexturizeによる文字列変換をしない
remove_filter('the_title' , 'wptexturize');// タイトル
remove_filter('the_excerpt', 'wptexturize');// 抜粋
remove_filter('comment_text', 'wptexturize');// コメント
remove_filter('the_content', 'convert_chars');// convert_charsによる文字列変換をしない
remove_filter('the_title' , 'convert_chars');// タイトル
remove_filter('the_excerpt', 'convert_chars');// 抜粋
remove_filter('comment_text', 'convert_chars');// コメント
});
?>
<?php // &形成の無効化(&が変換されてしまう文字列を見つけてreplace('&'を書き換える)
function my_replace_amp($content) {
return str_replace('&', '&', $content);
}
add_filter('the_content', 'my_replace_amp');
?>
そこで、ビジュアルエディターを使わず、テキストエディターを使わざるを得なくなるわけですが、これだとページの追加や編集が難しくなります。
(文書作成ツールで手打ちしてるのと変わらないですし)
確かに、function.php を直弄りして編集用のボタンを追加したりもしたのですが、所詮作業するのはテキストエディターでしたので、作業しづらいのには変わりませんでした。
<?php //テキストエディター(HTML エディター)に残すボタン
function default_quicktags($qtInit) {
$qtInit['buttons'] = 'link,more';
return $qtInit;
}
add_filter('quicktags_settings', 'default_quicktags', 10, 1);
?>
<?php //テキストエディター(HTML エディター)に追加するボタン
function add_my_quicktag() {
?>
<script type="text/javascript">
//QTags.addButton('ID', 'ボタンのラベル', '開始タグ', '終了タグ');
QTags.addButton('bold','太字','<strong>','</strong>');
QTags.addButton('br','改行','<br />\n','');
QTags.addButton('p1','P','<p>','</p>\n');
QTags.addButton('span1','SPAN','<span>','</span>\n');
QTags.addButton('div1','DIV','<div>','</div>\n');
QTags.addButton('hr','線','<hr />\n','');
QTags.addButton('ul1','リスト','<ul>\n<li></li>\n</ul>\n','');
QTags.addButton('li1','LI','<li>','</li>\n');
QTags.addButton('h3','サブタイトル','<h3>','</h3>\n');
QTags.addButton('red','赤','<span class="red">','</span>');
QTags.addButton('blue','青','<span class="blue">','</span>');
QTags.addButton('green','緑','<span class="green">','</span>');
QTags.addButton('yellow','黄','<span class="yellow">','</span>');
QTags.addButton('orange','橙','<span class="orange">','</span>');
QTags.addButton('gray','灰','<span class="gray">','</span>');
QTags.addButton('purple','紫','<span class="purple">','</span>');
QTags.addButton('blockquote','インデント','<blockquote>','</blockquote>\n');
QTags.addButton('f60','f60%','<span class="f60">','</span>');
QTags.addButton('f80','f80%','<span class="f80">','</span>');
QTags.addButton('f90','f90%','<span class="f90">','</span>');
QTags.addButton('f120','f120%','<span class="f120">','</span>');
QTags.addButton('f140','f140%','<span class="f140">','</span>');
QTags.addButton('f160','f160%','<span class="f160">','</span>');
QTags.addButton('f180','f180%','<span class="f180">','</span>');
QTags.addButton('table1','表(枠なし・1段)','<table><tr><td>\n\n</td><td class="left-blank">\n\n</td></tr></table>','</code>');
QTags.addButton('table2','表(枠あり・多段)','<div class="border-table"><table><tr>\n<th>タイトル1</th>\n<th>タイトル2</th>\n</tr><tr>\n<td>上段</td>\n<td>上段</td>\n</tr><tr>\n<td>下段</td>\n<td>下段</td>\n</tr></table></div>\n','');
QTags.addButton('italic','イタリック','<span class="italic">','</span>');
QTags.addButton('line-through','取消線','<span class="line-through">','</span>');
QTags.addButton('center','中央','<div class="center">','</div>\n');
QTags.addButton('right','右寄せ','<div class="right">','</div>\n');
QTags.addButton('code','CODE','<code>','</code>');
</script>
<?php
}
add_action('admin_print_footer_scripts','add_my_quicktag');
?>
プラグインの導入ができない
Wordpressを使うと、サムネイル入りの人気記事や、関連記事などを 『 自動で挿入 』 することができます。
手動で一々チマチマやる必要はありません。
でも、静的サイトの場合プラグインの導入ができません。
ですので、自分でやる必要があります。
サムネール用の画像を用意し、アクセス解析から人気ページを抽出、人気記事や関連記事へのリンクを自分で掲載などなど。
Wordpressなら一瞬でやってくれることを、一々自分でやらねばなりません。
これは結構な労力でありまして、静的ファイルで実現するのはかなり難しいです。
(アクセス解析から人気記事リストを作り、テンプレートに掲載する程度のことは可能かも?)
確かに、Linkwithin や Zen などの代替サービスを利用するとできなくもないのですが、サービス提供側のプログラムの誤作動や、サーバーの応答の遅さ(ページが重くなる)、それに強制広告の挿入などの事情があり、なかなか利用できないのが実情だったりします。
セキュリティの問題
セキュリティは、PHPでテンプレートを読み込んだ静的サイトの方が遥かに高いです。
Wordpressはオープンソース(コードが全公開されている)ですので、どこにセキュリティの穴があるのかを悪意のあるハッカーが見つけやすいです。
また、色々な機能やプラグインを使いますので、セキュリティの穴もできやすいです。
もちろん、Wordpressのバージョンアップでセキュリティの穴は潰されるのですが、プラグインのバージョンアップの大半は、プラグインの提供元に委ねられています。
(特に深刻で既知のケースでは、Wordpress.comの方で変更してしまったりするようですが)
プラグインの穴は、潰されるケースもあれば潰されずに放置されるケースもあります。
放置された上に、Wordpress.comで対応されない場合は、セキュリティの穴がぽっかり空いたまま、放置され続けることになります。
確かに、公式サイトから新規プラグインをダウンロードする場合には、もうすでにチェック済みのものから選べます。
しかしながら、時間が経ち、すっかりセキュリティの穴だらけになり、公式サイトからも削除された、遥か昔にインストールしたプラグインに対して、「 危ないから削除するか、別のプラグインに切り替えた方がよいですよ 」 とは、誰も教えてくれないのです。
ちなみに、Google Analytics などのアクセス解析には出ないものの、実は悪意のあるハッカーが流しているクローラーは山程来ています。
ですので、Wordpress 内に何かしらのセキュリティの穴があれば、あっと言うまに悪意のあるハッカーに発見されてしまいます。
(さくらのレンタルサーバは、Apacheが吐き出すエラーコード(File does not exist(ファイルが存在しない) をそのまま見ることができるため、さくらのレンタルサーバーに移転してから初めて気がつきました)
このようなことから、セキュリティのことを考えると、Wordpressを使う場合、更新が滞らなさそうなメジャーどころのプラグインのみを、テーマファイルも常に更新される公式のテーマファイルを使い、システムファイルのアクセスを制限し、システムファイルとプラグインとテーマファイルは常に最新になるように設定しないといけません。
(コメントしづらくはなりますが、WAF(Web Application Firewall)の設定も必要です)
この点では、セキュリティのリスクがゼロではないものの、PHPでテンプレートを読み込んだ静的サイトの方が優れているのかもしれません。
(できることは少なくなってしまいますし、あれやこれやとやらないと行けない作業が多くはなってしまいますが。(;´∀`))
ファイルの清浄化
もし、サーバーがハッキングの被害に遭い、サーバー上のファイルが改竄されてしまったら、静的ファイルで構成されているPHPのテンプレートサイトは清浄化が容易です。
ローカル(パソコン内)のファイルをサーバーにアップロードしなおせば良いだけなのです。
でも、これがデータベースの改竄となると大変です。
データベースの何が改ざんされているのか調べるのは困難だからです
まだ、時間をかければ、ページファイルくらいは確認できるかと思います。
でも、データベース内のプラグイン用のデータが改竄されていたりすると大変です。
それでもまだ、プラグインの数が少なければ見つけられる可能性もなきにしもあらずですが、プラグインの数が多ければ、見つけることすら困難です。
実際に、うちの Wordpress のブログがハッキングされた際、プラグインを全削除した後、残っていたプラグイン用のデータベースのデータをチマチマチェックしてみましたが、それでも大変な作業でした。
ですので、ハッキングされた後のファイルの清浄化は、圧倒的にテンプレート化したPHPサイトの方が楽だと思います。
サーバーの負荷
Wordpressはサーバーに負荷がかかりやすいです。
ですので、安くて同居人の多い共用サーバーではWordPressを動かすとやたらと重くなったり、503エラーが出まくることがあります。
ですので、Wordpressを使う場合は、サーバー選びをする際に、Wordpressが動く動かないではなく、Wordpressを快適に動かすことができる・できないで決める必要があります。
選択するコースは、資金が許す限りできるだけ高性能のコースが良いです。
(安かろうでギリギリのコースを選んでしまうと、後々大変なことになります)
ちなみに、PHPでテンプレートを読み込んだサイトの方が Wordpress ブログよりもサーバーの負荷はかかりにくいですが、かかりにくいと言うだけで、テンプレートの個数やテンプレートのファイルサイズやアクセス数などの状態によっては、やっぱり大きな負荷がかかってしまいますので、サーバー選びはできるだけ妥協しないほうが良いかと思います。(;´_`;)
もしそこで妥協してしまうと、私のように503エラー潰しのための苦労を何週間も続けるはめになってしまいます。
次ページ
前ページ
広告
- 【紆余曲折】 サイトをテンプレート化することを決意した
- 【難問解決】 PHPでテンプレートをincludeした
- サイトをPHPでテンプレート化するメリットとデメリット
- PHPとScriptによるテンプレートファイルの表示の違い
- Scriptでサイトをテンプレート化する方法とそのデメリット
- 【使い回し】 複数サイトのテンプレートの共有化について
- 【こんなはずでは】PHPやScriptを使ったテンプレートの注意点
- 【簡単メンテでも問題あり?】<head></head>内をincludeする
- 【静的】 Wordpress とテンプレート化したPHPサイトの違い 【動的】
- 【違う】ホームページビルダー16の付属テンプレートについて【そうじゃない】
- 【速い】 SSIでincludeに成功した!【安定】
- 【難問解決】 SSIのインクルードで圧縮できるか実験してみた
- jQuery で外部ファイルを読み込んだ時に文字化けするのを解消する方法