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作成
ページトップ

ブックマーク!


コメント投稿

* は必須項目です。入力したメールアドレスは公開されません。

*
*



AccessやExcel、.NETソフトウェア開発、WordPress等を使用したWebのシステム化、PCサポート、コンサルなどを行っています。全国対応可能です。お問い合わせください。
TEL (0776)56-8539