ワードプレスの条件分岐を最適にして高速化する方法
doudonn 更新日:
ワードプレスの条件分岐の最適化
条件分岐がやたら多くなるのがワードプレス。
高速化を意識すればけっこう速くなります。
簡単ながら効果のある方法を4つ紹介します。
1、条件分岐の書き方(noindexの場合)
<悪い書き方>
<?php if( is_paged() || is_date() || is_author() || is_search() || is_404()) { ?>
<meta name="robots" content="noindex">
<?php } ?>
<良い書き方>
<?php
if(!is_single()){
if(!is_home()){
if(!is_page()){
?>
<meta name="robots" content="noindex">
<?php
}
}
}
?>
「if」は条件が多いほど処理が遅くなる。
そのため、一番可能性が高いものを単独で判別する。
地味ながらけっこう速くなります。
2、条件分岐の書き方(titleタグの場合)
<良い書き方>
<title><?php
if(is_single()){
echo $post->post_title;
}elseif(is_home()){
bloginfo('name');
}elseif(is_page()){
echo $post->post_title;
}elseif(is_category() || is_tag()){
single_term_title();echo "の記事一覧 ";bloginfo('name');
}elseif(is_search()){
echo get_search_query();echo "の検索結果 - ";bloginfo('name');
}else{
bloginfo('name');
}
?></title>
同じように一番速度を上げたい記事ページを最初に書きます。
固定ページも別に分ける。
3、botかどうかの条件分岐の場合
<?php
if(is_search_engine_bot()){
$isbot = 1;
}else{
$isbot = 0;
}
//次回からはこれで分岐
if($isbot == 1){
}
?>
botかどうかを判別する関数を使っている人は多いだろう。
こういうのは一度判別すればいい。
変数に落として、2回目からはそれで判別しよう。
別のテンプレートでも使う場合は「global $isbot;」を記載してください。
4、モバイルかどうかの条件分岐の場合
<?php
if(is_mobile()){
$ismobile = 1;
}else{
$ismobile = 0;
}
//次回からはこれで分岐
if($ismobile == 1){
}
?>
botと同じ。
まとめ
順番を意識。
そして、判別関数の実行は一度だけにする。
特にbot・モバイル判定の処理は重くなりがちなので、
絶対に一度だけにしてください。
簡単ながら確実に速くなります。