WordPressのテンプレート高速化
WordPressのテンプレートは作成側の利便性のために様々なテンプレートタグを用意している。中でも良く使用するbloginfoタグは、引数の項目をswitchで振り分けた後、項目がキャッシュにあるかをチェックし、無ければクエリを発行して取得するため、塵も積もれば重くなる。なのでテンプレート高速化をまとめてみた。
bloginfoを変数に落とす
header.phpの先頭で良く使う項目は変数に落とし、また他のテンプレートファイルでも良く使う項目はglobal宣言をしている。(順番的にfunction.phpのほうがheader.phpより先に呼び出されるのでそちらでやっても可)
style.cssやfeedにxmlrpc.phpは他の情報から文字列連結で取得する。
サンプルコード(header.php)
<?php
global $_name,$_description,$_url,$_tpldir;
$_url = get_bloginfo('url', 'display'); //ブログのURL
$_tpldir = get_bloginfo('template_directory', 'display'); //ブログのテンプレートディレクトリ
$_name = get_bloginfo('name', 'display'); //ブログの名前
$_description = get_bloginfo('description', 'display'); //ブログの説明
$_rss = $_url.'/feed'; //ブログのRSS(2.0)のURL
$_rss1 = $_url.'/feed/rdf'; //ブログのRSS(1.0)のURL
$_atom = $_url.'/feed/atom'; //ブログのRSSatomのURL
$_ping = $_url.'/xmlrpc.php'; //ピンバック用URL
$_css = $_tpldir.'/style.css'; //メインCSSファイルのURL
?>
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta http-equiv="Content-Script-Type" content="text/javascript" />
<link rel="stylesheet" href="<?php echo $_css; ?>" type="text/css" media="screen" />
<link rel="stylesheet" href="<?php echo $_tpldir; ?>/print.css" type="text/css" media="print" />
<link rel="alternate" type="application/atom+xml" title="Atom" href="<?php echo $_atom; ?>" />
<link rel="alternate" type="application/rss+xml" title="RSS 1.0" href="<?php echo $_rss1; ?>" />
<link rel="alternate" type="application/rss+xml" title="RSS 2.0" href="<?php echo $_rss; ?>" />
<link rel="pingback" href="<?php echo $_ping; ?>" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
//以下略
他のテンプレート内でも初めにglobalで変数を使用できるようにすれば、余計な呼び出しを防げます。
余計なタグをそぎ落とす
WordPressのバージョンやマニフェストrsdなど余計なmetaタグを出力するのでそぎ落とすことにより、速度的にもセキュリティ的にも良くなります。(消してもHTMLソース見ればWordPressを使っていることはすぐ分かりますが。。。)
以下のコードをfunction.phpもしくはheader.phpの初めに追加します。
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'rsd_link');
Content-Typeを固定値にする
html以外で出力することは無いし、文字コードも固定値で問題ないかと
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
スタイルシートをJavaScriptの前に持っていく
link > style > scriptの順がよさげ。。。
All in One SEO Packを使用している場合
All in One SEO Packのタイトル書き換えを使用している場合はtitleタグの中を空かブログTOPページタイトルにする。
All in One SEO Packではタイトルの中身を置換しているので、ほとんどの場合いらない。
<title>ブログのタイトル</title>
最後に
こうしたら良いよ!とか間違っている!言葉足らずとかの意見がありましたら教えてください。
文章変更履歴
- 2009/3/30 サンプルコードにRSS1.0(RDF)、RSS2.0、ATOMを追加
- 2009/3/18 スタイルシートとJavaScriptの順番について追加
- 2009/3/13 bloginfoを変数に落とす部分に文章追加
- 2009/3/13作成
前後の記事
次の記事: 自己流WordPressの高速化TIPSまとめ
前の記事: Head CleanerとAll in One SEO Packのタイトル設定を同時に使用する方法(WordPress)
あわせて読む
コメント投稿