6年ぶりにWordPressテーマを変えてみました〜自作テーマフルカスタマイズの記録

6年前に始めたこのブログ。自作テーマを作って運用してきましたが、あまりにも時代遅れなコードが自分でも嫌になってきていたんです。ずっと流行遅れの洋服を着てるみたいで。

なるべく早くWordPressテーマを完成させるため、Bootstrapベースで作成していたのですが、ここ数年の業務では全く使わなくなってしまったこともあり、ちょっとした変更に戸惑うように。だって忘れちゃうよね、日常的に触れていないと。

やっと今年はIE対応から開放されましたし、重い腰をあげてGridベースのテーマに作り直しました。

テーマリニューアルの目的は低コスト

今回のテーマリニューアルの最大テーマ「低コスト」を掲げ、すぐに完成できて運用も楽々なコードを目指してみました。

以前のテーマは、無計画な増改築を繰り返した6年間で、すっかりコードがカオスになってしまっていたのです。お恥ずかしいのですが、外見ばかり重視で蓋を開けてみたら打ち消しCSSだらけとかね。CSSファイルは合計2000行ぐらいに膨れ上がっていました。

テーマファイル数も増殖していたため、バッサリすっきりさせることに成功しました!

なるべく共通化して使いまわしているため、記事一覧部分の見た目がほとんど一緒という副作用もありますが。トップページ・アーカイブ・サイドバー・関連記事は共通テンプレートファイルを使用することでファイル数もCSSも節約しています。

例えば、固定ページ表示用のpage.phpのコードは空行もカウントして10行。

<?php get_header(); ?>

<main class="l-main">
    <?php get_template_part('content', 'page'); ?>
</main>

<?php get_template_part('templates/breadcrumb'); ?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

single.phpも10行。
page.phpと違う部分はテンプレート読み込みファイルだけなので、ファイルを1つにまとめることもできたのですが、運用のしやすさ重視であえて分けてみました。この先カスタマイズしていくときに目的別に分割していたほうが断然やりやすいはず。

<?php get_header(); ?>

<main class="l-main">
    <?php get_template_part('content', 'single'); ?>
</main>

<?php get_template_part('templates/breadcrumb'); ?>
<?php get_sidebar(); ?>
<?php get_footer(); ?>

footer.phpも10行。わずか10行でもSEO対策として構造化もしっかり入れてます。

<footer class="l-footer" itemscope itemtype="https://schema.org/WPFooter">
    <small class="u_copylight js-inview">&copy;<span itemprop="copyrightYear">2016</span> - <?= date('Y') . ' ' ?><span itemprop="copyrightHolder name"><?php bloginfo('name'); ?></span></small>
</footer>

<?php get_template_part('templates/footermenu'); ?>
<?php get_template_part('footer_analytics'); ?>
<?php wp_footer(); ?>
</body>

</html>

どのファイルもコード数が少ないので、どこで何をしているのかスクロールせずにぱっと見ただけでわかるようになりました。

PHP8はより厳格なコードを求められるように

今回のテーマリニューアルのきっかけは、PHP8へのアップデートでした。PHP8はより厳格なコードが求められるため、PHP8へ切り替えた途端、エラーが出るわ出るわ。

「このサイトで重大なエラーが発生しました」と表示され、管理画面すらログインできない状態になってしまったのは、WP-Appboxプラグインの影響でした。最近の記事では全く使用していないためアンインストールするとエラーは残っているものの、なんとか動作する状態になりました。

次に大きな問題を抱えていたのが、自作していたお問い合わせフォーム部分でした。

PHP8から未定義の配列がエラーになってしまいます。お問い合わせフォーム用に使用していた$_POST部分が未定義エラーで引っかかりました。

$_POST('name');
$_POST('email');
$_POST('message');

この解決方法はONE NOTESさんの次の記事が参考になります。

>>>PHP | $_GETや$_POSTでのUndefined array keyエラーを解決する方法

他のエラーも、ほとんどが変数の未定義、配列の未定義を指摘されるものばかりでした。未定義エラーなら修正の難易度も低いので対応しやすいのではないでしょうか。

PHP7.4はアクティブサポートは終了してしまってしますし、セキュリティサポートも2022年11月までなので、直前であたふたしないよう早めにPHP8対応をしておきたいですね。

Related Posts