WordPressテーマ開発の基礎
WordPressのテーマ開発を始めるには、まずその核心的な構造を理解する必要があります。最も基本的なテーマは、少なくとも2つのファイルで構成されています:index.php と style.cssその中で、style.css スタイルシートだけでなく、テーマに関するメタ情報も含まれており、これらの情報は特定のコメントブロックを通じて宣言されます。これらのメタ情報はWordPressがテーマを認識するための鍵となります。
テーマ情報ヘッダーファイルの作成
はい。style.cssファイルの冒頭には、必ず標準的な形式のコメントブロックを含めなければなりません。このブロックには、トピックの名前、著者、説明、バージョンなどのメタデータが定義されています。例えば:
/*
Theme Name: My Custom Theme
Theme URI: https://example.com/my-theme
Author: Your Name
Author URI: https://example.com
Description: 这是一个用于学习的自定义主题。
Version: 1.0
License: GPL v2 or later
Text Domain: my-custom-theme
*/ その中のText Domainこれは国際化(i18n)のためのもので、後で翻訳関数(例えば…)を使用する際に役立ちます。__()または_e()これらは、()時に必ず指定しなければならないテキストフィールドです。これらの情報を正しく入力することが、トピックがWordPressのバックエンドに認識され、正常に有効になるための前提条件です。
推薦図書 WordPressテーマ開発:ゼロからプロフェッショナルレベルのウェブサイトテーマを構築するための完全ガイド。
テーマファイルの階層構造を理解する
WordPressはテンプレートの階層システムを使用して、異なるタイプのページにどのテンプレートファイルを適用するかを決定します。例えば、個別の記事にアクセスした場合、WordPressはまず以下の順番でテンプレートを探します:single.php;もし該当するものが存在しない場合は、元の状態に戻します。singular.php;最終的には元の状態に戻すindex.phpこの階層構造を理解することです(例えば…)front-page.php > home.php > index.php)これは、機能が完全なテーマを作成する上で非常に重要です。開発者は、最も具体的なテンプレートファイルを優先して作成し、そのテンプレートが正しく機能することを確認する必要があります。index.php最終的な予備手段として。
核心テンプレートファイルの役割
エントリーファイルに加えて、機能が充実したテーマには通常、以下のようなコアテンプレートファイルが含まれます:
* header.phpドキュメントのヘッダーを定義します。これには通常、以下のような情報が含まれます:<head>地域情報とウェブサイトのヘッダー部分です。
* footer.phpドキュメントのフッターを定義します。
* sidebar.phpサイドバー領域を定義します。
* functions.phpこれはトピックの「機能センター」であり、機能の追加、メニューの登録、特徴的な画像のサポートなどに使用されます。
テンプレートファイル内で使用するには、以下のようにします:get_header()、get_footer()、get_sidebar()これらの部分を導入するために`import`などの関数を使用し、コードのモジュール化を維持してください。
テーマの核心機能を構築する
テーマに関するfunctions.phpファイルはテーマ機能を強化するための核心です。これはテンプレートファイルではなく、テーマが初期化される際に自動的に読み込まれるPHPファイルであり、WordPressのコアAPIに接続するために使用されます。
テーマ機能ファイルの初期化処理
はい。functions.phpすべての操作は、以下の手順に従って行う必要があります:add_action()特定のアクションにリンクさせるか、またはそれを通じて…add_filter()データを変更するための標準的な出発点は…after_setup_themeアクション中にテーマを設定する機能がサポートされています。例えば:
function mytheme_setup() {
// 让WordPress管理文档标题
add_theme_support( 'title-tag' );
// 启用文章和页面的特色图像功能
add_theme_support( 'post-thumbnails' );
// 注册导航菜单位置
register_nav_menus( array(
'primary' => __( '主导航菜单', 'my-custom-theme' ),
'footer' => __( '页脚菜单', 'my-custom-theme' ),
) );
}
add_action( 'after_setup_theme', 'mytheme_setup' ); このコードにより、自動的な見出しタグの生成、記事のサムネイルの表示が有効になり、さらに2つのカスタムメニュー項目が登録されます。すべての文字列には翻訳関数が使用されています。__()そして、それに関連する指定も行われました。style.css一貫したテキストフィールドmy-custom-theme。
推薦図書 2026年の人気入門ガイド:ゼロから自分の最初のWordPressテーマを作成する方法。
スタイルシートとスクリプトファイルの正しい読み込み方法
テンプレートファイル内でCSSやJavaScriptファイルに直接ハードリンクを張ることは絶対に避けてください。代わりに、以下の方法を使用してください:wp_enqueue_style()とwp_enqueue_script()関数を作成し、それらを適切な場所にリンク(ハック)します。wp_enqueue_scripts動作上、これにより依存関係が正しく処理され、重複して読み込まれるのを防ぎます。
function mytheme_scripts() {
// 引入主题主样式表
wp_enqueue_style( 'mytheme-style', get_stylesheet_uri() );
// 引入自定义JavaScript文件
wp_enqueue_script( 'mytheme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), '1.0', true );
}
add_action( 'wp_enqueue_scripts', 'mytheme_scripts' ); 利用するget_stylesheet_uri()とget_template_directory_uri()テーマディレクトリのURLを動的に取得することができ、パスが正しいことを保証できます。
ツールバー領域の登録と管理
ウィジェット(Widget)はWordPressのコンテンツをダイナミックに表示するための鍵となる要素です。ウィジェットを有効にするには、まず以下の手順を行う必要があります:functions.phpサイドバー(Sidebar)にツールバーを登録する領域です。
function mytheme_widgets_init() {
register_sidebar( array(
'name' => __( '侧边栏', 'my-custom-theme' ),
'id' => 'sidebar-1',
'description' => __( '在此添加小工具。', 'my-custom-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', 'mytheme_widgets_init' ); 登録後、バックエンドの「外観」→「ツールバー」で「サイドバー」エリアを確認できます。その後、テンプレートファイル(例えば…)を…sidebar.php)中で使用するdynamic_sidebar( 'sidebar-1' )その関数を使用して、その領域の内容を呼び出して表示します。
テーマテンプレートとループの実装
WordPressにおけるコンテンツ表示の核心は「The Loop」です。これはPHPコードであり、記事が存在するかどうかをチェックし、記事がある場合にはそれぞれの記事を繰り返し表示するために使用されます。
記事の繰り返し表示(ループ処理)の標準的な書き方
はい。index.php、single.phpまたはarchive.php以下は、`%s`, `%1$s`, `{{var}}`, `:name` などのテンプレートタグを含むコード例で、ループの基本的な構造を示しています:
推薦図書 WordPressテーマ開発の究極ガイド:原理から実践まで。
<!-- 针对每一篇文章的HTML和模板标签 -->
<article>
<h2>あなたのウェブサイトのタイトルを表示するには、次のコードを使用してください。</h2>
<div class="entry-content">
あなたが送信したメッセージは長すぎます。最大300文字まで送信できます。
</div>
</article>
<p><?php _e( '抱歉,没有找到任何内容。', 'my-custom-theme' ); ?></p>
endif; 終わり ループの内部では、「the_」で始まる一連のテンプレートタグを使用することができます。例えば:the_title()、the_content()、the_permalink()などを使用して、現在の記事の各種情報を出力します。
カスタム記事の検索とループ処理
時には特定の条件に合致する記事を表示する必要があります(例えば、あるカテゴリーの最新の5件の記事など)。そのような場合、メインのループを変更するのではなく、新しい処理を作成するべきです。WP_Queryインスタンス。
<?php
$custom_query = new WP_Query( array(
'category_name' => 'news',
'posts_per_page' => 5,
) );
if ( $custom_query->have_posts() ) :
while ( $custom_query->have_posts() ) : $custom_query->the_post();
// 输出文章内容...
endwhile;
wp_reset_postdata(); // 重置全局$post数据
endif;
?> 非常に重要です:カスタムクエリを使用した後は、必ず以下の処理を実行しなければなりません。wp_reset_postdata()メインループのグローバルな記事データを復元することで、後続のコードでエラーが発生するのを防ぎます。
テンプレート部分の導入と再利用
DRY(Don’t Repeat Yourself)原則に従うために、繰り返し使用されるコード断片(例えば記事の要約やコメントリストなど)は、個別のファイル(パート)に分割し、それらを適切に再利用する必要があります。get_template_part()導入。
// 在循环中引入内容模板
while ( have_posts() ) : the_post();
get_template_part( 'template-parts/content', get_post_type() );
endwhile; このコードは順番に検索を行います。template-parts/content-{post-type}.php、template-parts/content.phpファイルを読み込みます。例えば、標準的な記事の場合、それを読み込むことになります。content-post.php。
高度なテーマ開発のためのコツ
基本機能が整ったら、より高度な機能を探求し、テーマの専門性と柔軟性を向上させることができます。
カスタマイザAPIの統合
WordPressのカスタマイザー(Customizer)を使用すると、ユーザーはテーマの設定をリアルタイムでプレビューしたり変更したりできます。カスタマイザーAPIを通じて、テーマに色の選択機能、アップロードコントロール、ドロップダウンメニューなどの設定項目を追加することが可能です。
function mytheme_customize_register( $wp_customize ) {
// 添加一个“主题选项”板块
$wp_customize->add_section( 'mytheme_options', array(
'title' => __( '主题选项', 'my-custom-theme' ),
) );
// 在板块中添加一个“页脚文本”设置
$wp_customize->add_setting( 'footer_text', array(
'default' => __( '版权所有', 'my-custom-theme' ),
'transport' => 'refresh', // 或 'postMessage' 用于实时JS预览
) );
// 为该设置添加一个文本输入控件
$wp_customize->add_control( 'footer_text', array(
'label' => __( '页脚文本', 'my-custom-theme' ),
'section' => 'mytheme_options',
'type' => 'text',
) );
}
add_action( 'customize_register', 'mytheme_customize_register' ); はい。footer.php中であれば、使用することができます。get_theme_mod( 'footer_text', '默认文本' )ユーザーが設定した値を出力してください。
サブトピックの作成と使用に関する規範
サブトピックを作成することは、既存のペアレントトピックを安全に修正するための最善の方法です。サブトピックには1つだけ必要です。style.cssそして、オプションとして…functions.php。
サブトピックのstyle.cssヘッダー部分は必ず通過しなければなりません。Templateフィールド宣言の親テーマディレクトリ名:
/*
Theme Name: My Child Theme
Template: my-custom-theme // 父主题目录名
...
*/ サブトピックのfunctions.php親テーマを上書きすることはなく、両方が一緒に読み込まれます。サブテーマ内のテンプレートファイルは、親テーマ内の同名ファイルを完全に置き換えます。これにより、必要な部分のみを修正しながら、親テーマが更新されても自分でカスタマイズした内容を保持することができます。
テーマの国際化とローカライゼーションの準備
テーマを世界中のユーザーが利用できるようにするためには、ユーザーに表示されるすべての文字列を国際化処理する必要があります。つまり、コード内のすべてのテキストを翻訳関数で囲む必要があるのです。
* __('文本', 'text-domain'):
* _e('文本', 'text-domain'): 翻译后的字符串をそのまま表示します。
* 对于带占位符的字符串,使用printf( __( '搜索 %s 的结果', 'my-custom-theme' ), $search_term )。
作業が完了したら、Poeditなどのツールを使用してすべての翻訳済みテキストを抽出し、必要なファイルを生成してください。.potこのファイルをもとに、翻訳者は作業を進めることができます。zh_CN.poと.mo各言語パックのファイルは、テーマディレクトリ内に配置してください。/languages/ディレクトリ内にあります。
概要
WordPressのテーマ開発とは、基本的なファイル構造を理解することから始め、徐々にコア機能やテンプレートシステム、ループ処理に深く入り込み、最終的には高度なカスタマイズや国際化(インターナショナライゼーション)のプロセスをマスターするまでの体系的な作業です。重要なのは、WordPressのコーディングスタンダードやベストプラクティスに従うことです。例えば、アクションフックの正しい使用、関数によるテンプレートタグの封装、Customizer APIを通じた設定オプションの提供、そしてすべてのテキストに対する国際化対応の準備などです。最もシンプルなテーマから始めても、徐々に高度な機能を実装していくことができます。style.cssとindex.phpまずは始めて、徐々にテンプレートファイルを追加し、コンテンツを充実させていきましょう。functions.phpその機能を活用し、サブテーマの仕組みを使ってセキュリティ設定をカスタマイズすることで、開発者は強力で柔軟性のあるプロフェッショナルレベルのテーマを構築することができます。これらのコアコンセプトを継続的に学び、実践することが、高品質でメンテナンスが容易、かつ互換性の高いパーソナライズされたWordPressサイトを作成するための基盤となります。
FAQ よくある質問
###: WordPressテーマを開発するには、どのような前提知識が必要ですか?
WordPressのテーマを開発するには、HTMLとCSSの基本知識が必要です。これらはウェブページの構造とスタイルを作成するために使用されます。また、PHPについても基本的な理解が必要です。なぜなら、WordPressのコアやテーマのテンプレートはすべてPHPで書かれているからです。さらに、JavaScriptについての初歩的な知識も、インタラクティブな機能を追加するのに役立ちます。記事、ページ、カテゴリ、タグ、ウィジェットといったWordPressの基本概念を理解することも、始めるための不可欠なステップです。
なぜ私のカスタムテーマがバックエンドに表示されないのか?
これは通常、以下のような理由によるものです:style.cssファイルの上部にあるトピック情報のコメントブロックの形式が正しくない、または情報が欠落しているためです。コメントブロックがWordPressの要件に完全に準拠していることを確認してください。Theme Name:フィールドは正しく記入されています。また、トピックフォルダーが適切な場所に配置されているか確認してください。/wp-content/themes/ディレクトリ内にあり、フォルダ名には特殊な文字や中国語が使用されていません。
どうすれば私のテーマが中国語やその他の言語をサポートできるようになるのでしょうか?
まず、開発プロセスにおいて、ユーザーに表示されるすべてのテキストが翻訳機能(例えば)を使用していることを確認してください。__()または_e())でラップし、正しいテキストドメイン(Text Domain)を指定する必要があります。このテキストドメインは、style.css中で宣言されたテキストドメインが一致しています。その後、Poeditなどのツールを使用してテーマファイルをスキャンし、生成します。.pot翻訳テンプレートファイルです。翻訳者はこのテンプレートを基に、対応する言語のファイルを作成することができます(例:日本語版のファイルを作成するために)。zh_CN.po)の翻訳ファイルを作成し、それをコンパイルしてください。.moファイルです。最後に、これらの言語ファイルをトピックの中に配置してください。/languages/ディレクトリ内のコンテンツは、ユーザーがサイトの言語を切り替えると自動的に読み込まれます。
親テーマが更新された後、私のサブテーマに加えた変更内容は失われてしまいますか?
いいえ。サブテーマの設計思想自体が、安全にカスタマイズを行えるようにするためのものです。親テーマが更新されても、影響を受けるのはその親テーマ自身のファイルのみです。あなたのサブテーマのファイル(およびその中のコンテンツ)には変更はありません。style.css、functions.phpまた、サブトピックにコピーして変更したすべてのテンプレートファイルもそのまま保持されます。これが、既存のトピックを直接変更するのではなく、サブトピックを作成してから変更することを強くお勧めする理由です。
ページビルダーを使用するか、自分でテーマを開発するか、どちらを選ぶべきでしょうか?
それはあなたの目標、スキル、そして時間によります。ElementorやWPBakeryのようなページビルダーを使用すれば、コーディングなしで迅速にウェブサイトを構築することができ、初心者やフリーランサー、そして迅速な納品が求められるプロジェクトに非常に適しています。しかし、冗長なコードが生成される可能性があり、ウェブサイトのパフォーマンスに影響を与えることもあります。また、サプライヤーロックインのリスクもあります。一方で、自分でテーマを開発することで完全なコントロールが可能となり、クリーンで効率的なコードを生成し、特定のニーズにより良く対応することができ、開発スキルの向上にもつながります。ただし、学習に時間がかかり、開発サイクルも長くなります。極めたパフォーマンスやユニークなデザインを求める開発者、またはWordPressの仕組みを深く理解したい開発者にとっては、自分でテーマを開発することが最適な選択です。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。