PHP

WordPressフレンドリーなPHPの書き方でメンテナンス性を高める

2018.05.18

コード

WordPressはPHP制のブログツールです。なのでちょっとしたカスタマイズならプラグインを使うよりもテーマに直接PHPでコードを書いた方が手っ取り早く出来ちゃいます。複雑にモジュール化されたハイグレードなテーマの場合は別かもしれませんが・・・・まぁイレギュラーは置いといてWordPressのテーマに独自のコードを書き込む場合、私的にこの書き方をして置いた方がメンテナンス性がいいよ!ってのを紹介します。

HTMLとPHPを分離する

WordPressにPHPのコードを直接書く時に注意したいのは、HTMLとPHPを分離して記述することです。条件文やループも少し書き方を変えてやればOKです。

if文

普通にPHPでif文を記述すれば下記のようになると思います。

<?php
if(条件){
  処理
}
?>

処理中にHTMLタグを記述する必要がある場合、この書き方ではHTMLタグもPHPコードの中に含めなくてはなりません。クラスなどを付与するのならエスケープしないとダメだったりとか取り回しが不便ですし、可読性もわるかったりします。だもんで下記のように記述することをおすすめします。

<?php if (条件): ?>
  処理
<?php endif; ?>

この方法であればHTMLタグを通常のHTMLファイルに記述するのと同じ感覚で記述できますので、HTMLの取り回しが随分楽になります。いちいちPHPの開始・終了タグを記述しなければならない面倒さはありますが、その辺はテキストエディタのスニペットをうまく活用すれば問題にならないと思います。

WordPressのループ

WordPressのカスタマイズの主役はおそらくループではないでしょうか。その中でもデフォルトで使われているwhileforeachは使用頻度が高いと思われますので、この2つのループでこの書き方をマスターしておけばちょっとしたカスタマイズは捗ると思います。

while

エントリー表示のデフォはwhileですよね。

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>
<h1 class="title"><?php the_title() ?></h1>
<div class="entry">
<?php the_content(); ?>
</div>
<?php endwhile; endif; ?>

foreach

foreachは投稿の一覧を読み込むのに重宝します。

<?php $args = array(
'posts_per_page'   => 5,
'offset'           => 0,
'orderby'          => 'date',
'order'            => 'DESC',
'post_type'        => 'post',
'post_status'      => 'publish',
'suppress_filters' => true
);
$posts_array = get_posts( $args ); ?>
<?php foreach ( $posts_array as $post ) : setup_postdata( $post ); ?>
  //処理
<?php endforeach; wp_reset_postdata(); ?>

まとめ

可読性がよくなるとメンテナンス性もたかまります。運用中のちょっとした変更の対応も行いやすいのではないでしょうか。なにより自分以外の人がファイルを触る場合、このようにHTMLとPHPが分離してるとコードも読みやすいと思いますので、色々コストが下がる気がします。

WEBSITE DESIGN REQUEST

ホームページ制作依頼について

W・D・Sでホームページ制作をご希望の方はお気軽にご相談ください。
制作内容、ご予算、納期をお知らせいただくとスムーズです。

ホームページ制作を相談する