WordPress の子テーマを用意して 404.php をカスタマイズしてみた

WordPress テーマ内の PHP ファイルをカスタマイズすると、テーマをアップデートした際に上書きされて、カスタマイズが無かった事になってしまいます。そこで、子テーマを用意して子テーマの PHP ファイルをカスタマイズしておけば、親テーマをアップデートしてもカスタマイズを残す事ができます。という事で、試しに 404.php をカスタマイズしてみました。

子テーマを作成

例では、twenty-minutes というテーマを使用しています。

cd /var/www/html/wp-content/themes

mkdir twenty-minutes-child

cat <<"EOF" > twenty-minutes-child/style.css
/*
Theme Name: twenty-minutes-child
Template: twenty-minutes
*/
EOF

cat <<"EOF" > twenty-minutes-child/functions.php
<?php

function theme_enqueue_styles() {
  wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' );
  wp_enqueue_style( 'child-style', get_stylesheet_directory_uri() . '/style.css', array('parent-style'));
}

add_action( 'wp_enqueue_scripts', 'theme_enqueue_styles' );

?>
EOF

cp twenty-minutes/404.php twenty-minutes-child/

chown -R www-data:www-data twenty-minutes-child

カスタマイズ前の 404 ページ

子テーマを有効化

404.php をカスタマイズ

変更前の状態

<?php
/**
 * The template for displaying 404 pages (Not Found).
 *
 * @package Twenty Minutes
 */

get_header(); ?>

<div class="container">
    <div id="content" class="contentsecwrap">
        <section class="site-main">
            <header class="page-header">
                <h1 class="entry-title"><?php esc_html_e( '404 Not Found', 'twenty-minutes' ); ?></h1>
            </header>
            <div class="page-content">
                <p><?php esc_html_e( '404 Not Found', 'twenty-minutes' ); ?></p>
            </div>
        </section>
        <div class="clear"></div>
    </div>
</div>

<?php get_footer(); ?>

変更後の状態

<?php
/**
 * The template for displaying 404 pages (Not Found).
 *
 * @package Twenty Minutes
 */

get_header(); ?>

<div class="container">
    <div id="content" class="contentsecwrap">
        <section class="site-main">
            <header class="page-header">
                <h1 class="entry-title"><?php esc_html_e( '404 Not Found', 'twenty-minutes' ); ?></h1>
            </header>
            <div class="page-content">
                <p><?php esc_html_e( '404 Not Found : ページが見つかりませんでした', 'twenty-minutes' ); ?></p>
            </div>
        </section>
        <div class="clear"></div>
    </div>
</div>

<?php get_footer(); ?>

カスタマイズ後の 404 ページ

参考

タグ: