環境準備と基本概念
コードの作成を始める前に、適切なローカル開発環境が必要です。Local by Flywheel、XAMPP、MAMPなどの統合されたローカルサーバーソフトウェアパッケージの使用をお勧めします。ローカルサイト内では、WordPressのコアファイルがすでにインストールされている必要があります。
すべてのWordPressテーマには、2つの最も基本的なファイルが含まれていなければなりません:style.css と index.php。style.css スタイルシートだけでなく、あるテーマの「身分証明書」のようなものでもあります。このテーマは、特別なファイルヘッダー(Theme Header)を通じてWordPressにテーマの情報を宣言します。index.php これはトピックのデフォルトテンプレートファイルであり、専用のテンプレートが指定されていないすべてのページリクエストを処理する役割を果たします。
典型的テーマでは、カタログ構造において明確な階層が守られています。コアテンプレートファイルは通常、テーマのルートディレクトリに直接配置され、CSS、JavaScript、画像リソースはそれぞれ別のディレクトリに保存されています。 /css、/js と /images このようなサブディレクトリの中には、より複雑なトピックに関する情報も含まれています。 /template-parts ディレクトリは、再利用可能なテンプレートの断片を保存するために使用されます。/inc ディレクトリは、機能強化用のファイルを保存するために使用されます。
推薦図書 WordPressテーマ開発の究極ガイド:ゼロからカスタムテンプレートの構築まで。
WordPressのテンプレート階層を理解する
WordPressは、「テンプレート階層(Template Hierarchy)」と呼ばれるインテリジェントなシステムを採用しており、特定のページでどのテンプレートファイルを使用するかを決定します。このシステムは、テーマ開発における中心的なロジックです。
たとえば、ユーザーがブログのホームページにアクセスすると、WordPressはまず「〜」という名前のものが存在するかどうかを探します。 front-page.php そのファイルです。もしそのファイルがない場合、それは続けて別のファイルを探します。 home.phpもしまだ解決しない場合、最終的にはデフォルト設定に戻ることになります。 index.phpWordPressにおける個別の記事の検索順序は以下の通りです:single-{post-type}-{slug}.php -> single-{post-type}.php -> single.php -> singular.php -> index.php。
テンプレートの階層構造を理解し、上手く活用することで、ブログ記事、静的ページ、カテゴリーアーカイブ、検索結果ページなど、さまざまなタイプのページに対して高度にカスタマイズされたレイアウトや外観を簡単に作成できます。複雑な条件判断のロジックを記述する必要もありません。
テーマ別情報ステートメント
style.css ファイルの冒頭には、CSSのコメント形式で書かれたヘッダー情報を含める必要があります。これにより、テーマのメタデータを定義することができます。最小限の例は以下の通りです:
/*
Theme Name: My First Theme
Theme URI: https://example.com/my-first-theme
Author: Your Name
Author URI: https://example.com
Description: 这是我的第一个 WordPress 主题,用于学习主题开发。
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-first-theme
*/ その中で、「Text Domain」は国際化のために使用されるもので、翻訳関連の関数を呼び出す際に必ず使用しなければならない識別子です。このファイルのヘッダー部分は、WordPressがあなたのテーマを認識し、有効にするための唯一の根拠となります。
推薦図書 WordPressテーマ開発入門から上級者へ:パーソナライズされたウェブサイトを構築するための核心ガイド。
コアテンプレートファイルを構築する
では、最も重要なテンプレートファイルから構築を始めましょう。まずは… index.php 基本的な構造を中で作成します。標準的なテンプレートファイルには、ヘッダー、メインコンテンツエリア、サイドバー、フッターへの呼び出しが含まれているべきです。
基本的なテンプレートファイルには、通常、以下のWordPressコア関数の呼び出しが含まれています:get_header()、get_footer()、get_sidebar() も get_template_part()これらの関数は対応するテンプレートファイルを読み込み、ページの構造をモジュール化します。
ヘッダーテンプレートを作成します。
header.php このファイルには、すべてのページのトップに表示される内容が含まれています。少なくともHTML5のドキュメントタイプ宣言を含んでいなければなりません。 <!DOCTYPE html>、<head> 地域情報およびページの本文が始まる部分 <body> そして <header> タグ。
はい。 <head> この地域において、非常に重要なのは「使用する」ということです。 wp_head() フック(Hook)。このフックにより、WordPressのコア、プラグイン、そしてあなたが作成したテーマ自体が、ページのヘッダー部分に必要なコード(スタイルシートのリンク、メタタグ、スクリプトなど)を挿入することができます。ヘッダーテンプレートの簡単な例は以下の通りです:
<!DOCTYPE html>
<html no numeric noise key 1006>
<head>
<meta charset="<?php bloginfo( 'charset' ); ?>">
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body no numeric noise key 1003>
<header id="masthead" class="site-header">
<h1 class="site-title"><a href="/ja/</?php echo esc_url( home_url( '/' ) ); ?>">ブログの名前を表示するには?php bloginfo( 'name' ); ?></a></h1>
</header> body_class() この関数は、現在のページタイプに基づいた一連のCSSクラス名を出力します。これにより、スタイルの管理が非常に容易になります。
メインループを作成し、コンテンツを表示する
WordPressでは、「The Loop」と呼ばれる処理ルーチンを使用して、現在取得された記事リストを順に処理し、表示します。このループはテンプレートファイルの中で最も中心的な部分であり、通常は以下のような場所に記述されています: index.php、single.php または archive.php 真ん中だ。
推薦図書 WordPressテーマ開発をマスターする:ゼロからテーマを構築し適用するための完全ガイド。
典型的なメインループ構造は以下の通りです:
<article id="post-<?php the_ID(); ?>" no numeric noise key 1007>
<h2><a href="/ja/</?php the_permalink(); ?>">あなたのウェブサイトのタイトルを表示するには、次のコードを使用してください。</a></h2>
<div class="entry-content">
あなたが送信したメッセージは長すぎます。最大300文字まで送信できます。
</div>
</article>
<p><?php esc_html_e( 'Sorry, no posts matched your criteria.', 'my-first-theme' ); ?></p>
endif; 終わり ループの内部では、「the_」で始まる一連のテンプレートタグを使用することができます。例えば: the_title()、the_content()、the_excerpt() と the_post_thumbnail()、記事の各部分を出力します。
スタイルと機能を追加する
テーマの視覚的な表現はCSSによって制御されています。 style.css スタイルを直接コード内で記述する方法の他に、より専門的な方法としては、外部のファイルやライブラリを利用することです。 functions.php ファイルはスタイルシートやスクリプトの読み込みのためにキューに入れられ、正しい依存関係と読み込み順序が保たれるようになっています。
functions.php このファイルは、あなたのテーマの「機能拡張ツール」です。これはテンプレートファイルではなく、テーマが初期化される際に自動的に読み込まれるPHPファイルであり、関数、クラス、フック(Hooks)、フィルター(Filters)を定義するために使用されます。
スタイルとスクリプトを正しく導入する方法
あなたは「should use」という表現を使うべきです。 wp_enqueue_style() と wp_enqueue_script() これらの関数はリソースを追加するためのものです。これらの関数は、適切な場所にマウントされる必要があります。 wp_enqueue_scripts このアクションフックを使用する利点は、WordPressがリソースを一元管理できることで、重複した読み込みや依存関係の衝突を防ぐことができる点です。
function my_first_theme_scripts() {
// 加载主样式表
wp_enqueue_style( 'my-first-theme-style', get_stylesheet_uri(), array(), '1.0' );
// 加载一个自定义的 JavaScript 文件
wp_enqueue_script( 'my-first-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'my_first_theme_scripts' ); 登録メニューとサイドバー
WordPressのメニューやサイドバー(ツールバー領域)は、まず設定を行う必要があります。 functions.php まず「登録」を行い、その後で対応するテンプレートファイル内で「表示」することができます。
利用する register_nav_menus() 関数を使用して料理の配置場所を登録します:
function my_first_theme_setup() {
register_nav_menus( array(
'primary' => __( 'Primary Menu', 'my-first-theme' ),
'footer' => __( 'Footer Menu', 'my-first-theme' ),
) );
}
add_action( 'after_setup_theme', 'my_first_theme_setup' ); そして、 header.php その中で、あなたは使用することができます。 wp_nav_menu() メインメニューを表示するための関数です。
利用する register_sidebar() 小道具エリアを登録するための関数:
function my_first_theme_widgets_init() {
register_sidebar( array(
'name' => __( 'Main Sidebar', 'my-first-theme' ),
'id' => 'sidebar-1',
'description' => __( 'Add widgets here.', 'my-first-theme' ),
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
}
add_action( 'widgets_init', 'my_first_theme_widgets_init' ); その後、 sidebar.php ここでは、「使用」を使っています。 dynamic_sidebar() この関数を使用して、このエリアを呼び出します。
テーマのテストと公開
開発が完了した後、必ず包括的なテストを行う必要があります。これには、さまざまなブラウザ(Chrome、Firefox、Safari、Edge)および異なるデバイスサイズ(デスクトップ、タブレット、スマートフォン)でテーマの表示結果を確認することが含まれます。すべてのリンクが正常に機能し、フォームが正しく動作し、メニューが小さな画面でも正しく表示されることを確認してください。
デバッグモードを有効にします。
開発中には、WordPressのデバッグモードを有効にすることを強くお勧めします。これにより、PHPのエラー、警告、および通知を迅速に発見することができます。 wp-config.php ファイル内で、以下の行を見つけて修正してください:
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true ); // 将错误记录到 /wp-content/debug.log 文件
define( 'WP_DEBUG_DISPLAY', false ); // 不要在页面上显示错误 オープン WP_DEBUG_LOG エラー情報をログファイルに記録することで、機密情報がウェブサイトの訪問者に直接露出するのを防ぐことができます。
トピックの基準を確認する
公開または使用する前に、あなたのテーマはできるだけ「WordPress テーマ開発ガイドライン」に従うべきです。これには、ページに出力されるすべてのデータが適切にエスケープされていることを確認すること(適切なエスケープ処理の使用を含む)などが含まれます。 esc_html()、esc_url() (等の関数)すべての翻訳可能なテキストは使用されます。 __() または _e() 関数はパッケージ化されており、テーマコードにはハードコードされたURLは一切含まれていません。
公式の「Theme Check」プラグインを使用すると、テーマのコンプライアンスチェックを自動的に行うことができます。このプラグインはコードをスキャンし、潜在的な問題、セキュリティ上の脆弱性、または標準に準拠していない点を指摘してくれます。
公開の準備ができました。
テーマの開発、テスト、レビューがすべて完了したら、WordPress.orgのテーマディレクトリに公開するか、個人や顧客向けにパッケージ化して提供することができます。公開用のパッケージには、テーマに必要なフォルダーとファイルのみを含め、すべてのバージョン管理用のファイル(例:Gitのリポジトリファイルなど)は削除してください。 .git開発ツールの設定やバックアップファイルも準備してください。また、その内容が正しく保存されていることを確認してください。 style.css 文中のテーマ情報は完全かつ正確であり、クリアな画像も用意されています。 screenshot.png(1200×900ピクセル)をトピックのサムネイルとして使用します。
概要
「Create a file that contains…」 style.css と index.php 基本フォルダから始めて、テンプレートの階層構造を理解し、コアテンプレートファイルを構築し、メインループを利用してコンテンツを表示する方法までを学び、そしてそれを通じて… functions.php スタイルやスクリプト、機能を追加し、最後に厳格なテストと標準化のチェックを行うことで、基本的なWordPressテーマが完成します。このプロセスを通じて、使えるテーマを手に入れるだけでなく、何よりもWordPressテーマのアーキテクチャについて深い理解を得ることができます。この知識を基に、カスタム記事タイプの作成、テーマカスタマイザーAPIの利用、ブロックエディター(Gutenberg)のサポートなど、より高度な機能を持つテーマの開発に取り組むことができるようになります。そうすることで、徐々にプロフェッショナルなWordPressテーマ開発者へと成長していけるのです。
FAQ よくある質問
WordPressのテーマには、少なくともいくつのファイルが必要ですか?
WordPressで認識され、有効になるテーマには、少なくとも2つのファイルが必要です:style.css と index.phpその中で、style.css 正しいトピック情報を含むヘッダー注釈を必ず記載してください。
なぜ私のカスタムスタイルが反映されないのでしょうか?
これは通常、CSSセレクターの優先順位が低いか、スタイルシートが正しく読み込まれていないために発生します。まず、ブラウザの開発者ツールを使用して、スタイルシートファイルが正常に読み込まれているか、およびCSSルールがより優先順位の高いルールによって上書きされていないかを確認してください。次に、以下の方法で確認してください: functions.php の中 wp_enqueue_style() スタイルを読み込むために関数を使用し、HTML内に直接記述するのではありません。 <link> タグ。
テーマにカスタムのページテンプレートを追加するにはどうすればよいですか?
新しいPHPファイルを作成します。例えば、`new_file.php`という名前にします。 page-fullwidth.phpそのファイルの最上部に、以下のPHPコメントを追加してテンプレート名を宣言してください:<?php /* Template Name: 全宽页面 */ ?>その後、このファイルにデフォルトのページテンプレートとは異なる内容を記述することができます。 page.php このレイアウトとコードについてです。ページを作成または編集する際には、「ページ属性」モジュールでこの新しいテンプレートを選択することができます。
functions.php とプラグインにはどのような違いがありますか?
functions.php それは現在のテーマの一部であり、その機能は現在のテーマと深く結びついています。もしテーマを切り替えた場合、functions.php このコードはもはや効力を発揮しません。プラグインが提供する機能はテーマとは独立しており、どのテーマを使用しても、プラグインが有効になっていればその機能は利用できます。一般的に、ウェブサイトの視覚的な表現に密接に関連する機能はテーマ内に配置されますが、汎用的で独立した機能はプラグインとして作成するのが適しています。
どうやって私のテーマを多言語対応(国際化)にするか?
あなたは2つのことをしっかりと行う必要があります:翻訳ファイルの準備と読み込みです。まず、コード内でユーザーに表示されるすべての文字列(例えば…) ('Read More', 'my-first-theme'))すべての場合において、次のようなものを使用する必要があります: () または _e() このような翻訳機能をパッケージ化し、2番目のパラメータ(テキストフィールド)を… style.css 中で宣言された「Text Domain」と一致しています。その後、Poeditのようなツールを使用して作成を行います。 .pot テンプレートファイル、そしてそれに対応するものを翻訳して生成してください。 .po と .mo ファイルです。最後に、 functions.php ここで使用されているのは load_theme_textdomain() 翻訳ファイルを読み込むための関数です。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。