勉強したことのメモ

Webエンジニア / プログラマが勉強したことのメモ。

WordPressでCSSとHTMLコーディングデータから自作テーマを作成する方法

   2024/02/22  WordPress

CSSとHTMLコーディングデータがあり、それをWordPressのテーマに反映させる必要があった。ちょっとしたデザインの変更であれば既存のテーマを修正する形がよさそうだけど、今回のケースだと1から作ったほうが早そうだった。その中で今後役立ちそうな部分のメモ。

 

前提

最低限だとCSS、PHPが1ファイルずつとスクリーンショット画像のみでいけるけど、ヘッダー&フッター等の共通パーツや固定ページ用、投稿ページ用ファイルも作るものとする。

 

ディレクトリの作成

/wordpress/wp-content/themes/以下に適当な名前のディレクトリ作成する。テーマ名にするのが通例っぽい。今回はtest-themeとする。

 

メインのCSSに関して

名前はstyle.cssにする。また、そのファイルの上部に以下記述を行う。

/*
Theme Name: テーマ名(今回だとtest-themeになる)
Description: テーマ説明
Version: バージョン(1.0とか)
Author: 作成者名
Author URI: 作成者サイトURL
*/

 

スクリーンショット画像

サイズは300 x 225pxでscreenshot.jpgもしくはscreenshot.pngの画像を用意する。

 

共通パーツ

ヘッダー部分はheader.php、フッター部分はfooter.php、サイドバー部分はsidebar.phpという名前のファイルを作成し中身を入れていく。

尚、注意点としてheader.phpの<head>タグ内に<?php wp_head(); ?>を、footer.phpの</body>タグ前に<?php wp_footer(); ?>を記述しておく。これを書いておかないとプラグインとかで呼び出すCSSやJSファイルなどが呼び出されなくなる。

また、他のページから共通パーツを呼び出したい場合は以下の通り記述する。

<?php get_header(); //ヘッダー?>
<?php get_sidebar(); //サイドバー?>
<?php get_footer(); //フッター?>

 

TOP / 固定ページ / 投稿ページ

TOPページはindex.php、固定ページはpage.php、投稿ページはsingle.phpという名前のファイルを作成し中身を入れていく。ざっくりとだけど共通パーツを読み込んだ上で、コンテンツを表示させたい部分に以下で出力する。

<?php if (have_posts()) : ?>
    <?php while (have_posts()) : the_post(); ?>
        <?php the_content(); ?>
    <?php endwhile; ?>
<?php else : ?>
    not found
<?php endif; ?>

尚、固定ページと投稿ページを設定したら必ずどちらかになりそうなもんだけど、そうならないページが1つあった。それはWordPressのダッシュボードで「設定→表示設定→フロントページの表示→固定ページにチェック→投稿ページ」で選択したページはindex.phpが適用された。

 

404ページ

404.phpという名前のファイルを作成し中身を記述する。「ページが見つかりませんでした」みたいな表示でもいいし、PHPでTOPページに遷移させるようプログラムを書いてもいい。

 

完成

作成したファイルを全てtest-themeディレクトリにアップロードすれば完成する。WordPressnoダッシュボードから「概観→テーマ」から選択できる筈。

 

よく使うWordPress用関数

<?php
echo home_url(); //サイトURL
echo get_template_directory_uri(); //テーマを設置しているディレクトリのURL
if( is_front_page() ) //TOPページだった場合
if( is_page() ) //固定ページだった場合
$post_id = get_the_ID(); //ページIDの取得

 

リファレンス

https://wpdocs.osdn.jp/Main_Page

 

その他

最初は敷居が高いかと思っていたけど実際に作るとそうでもなかった。最低限index.php / style.css / screenshot.jpgがあればテーマとして成り立つ。

今回は触らなかったけどテーマによってはダッシュボードと連携して設定を変えられたりするものもあるので、そういうのも挑戦してみたい。

 - WordPress

  関連記事

WordPressにてACFで設定したカスタムフィールドの値を元に記事を並べ替える方法

WordPressにてAdvanced Custom Fieldsで設定したカス ...

WordPressにてAdvanced Custom Fieldsを用いて連載(シリーズ)記事機能を実装する方法

先日「Series」プラグインで連載(シリーズ)記事機能の実装方法をメモしたが、 ...

WordPressで記事検索時に投稿ID順にならない場合の対応方法

WordPressでサイト上から記事検索(キーワード検索)を行った場合、通常であ ...

WordPressのxmlrpc.phpに対する攻撃の対策方法

サーバーの死活監視をしているシステムから、1つのサイトが落ちているとアラートがき ...

WordPressでデータベース接続確立エラー発生時の対応方法

WordPressで「データベース接続確立エラー」というエラー表示がされた。大抵 ...