開発環境と基本ファイルの設定
コードの執筆を始める前に、専門的なローカル開発環境を構築することが重要です。Local by Flywheel、XAMPP、MAMPなどのツールを使用して、PHP、MySQL、Apache/Nginxを備えたサーバー環境を迅速にセットアップすることをお勧めします。最新バージョンのWordPressをインストールし、有効にしてください。その後、WordPressのインストールディレクトリ内で… wp-content/themes フォルダ内に新しいフォルダを作成し、それをあなたのテーマディレクトリとして使用してください。例えば: my-professional-theme。
コアスタイルシートとテーマ情報
各WordPressテーマの入口ファイルは、`index.php`です。 style.cssこのファイルにはCSSスタイルだけでなく、上部にあるコメントヘッダー(Theme Headers)も含まれており、これがWordPressがテーマを識別するための「身分証明書」のようなものです。このファイルは、この特定の形式で始まる必要があります。
/*
Theme Name: My Professional Theme
Theme URI: https://example.com/my-professional-theme/
Author: Your Name
Author URI: https://example.com/
Description: 这是一个精心构建的专业WordPress主题,适用于企业网站和博客。
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-professional-theme
*/ Text Domain これは国際化(i18n)のためのもので、テーマフォルダの名前と一致していなければなりません。その他の部分については… functions.phpテンプレートファイルなどは、このテキストエリアに依存して翻訳データを読み込むことになります。
推薦図書 WordPressテーマ開発の完全ガイド:ゼロからプロフェッショナルレベルのテーマを構築する。
テーマ機能関数の初期化
functions.php これはテーマの「脳」のようなもので、機能の追加やメニューの登録、サイドバーの設定などを行うためのものです。最初のステップとしては、通常、そのテーマがサポートする機能を設定することになります。基本的な初期化関数の例は以下の通りです:
<?php
// my-professional-theme/functions.php
add_action( 'after_setup_theme', 'my_theme_setup' );
function my_theme_setup() {
// 让主题支持自动 Feed 链接
add_theme_support( 'automatic-feed-links' );
// 让文章和页面支持特色图像(Featured Image)
add_theme_support( 'post-thumbnails' );
// 让主题支持 HTML5 标记
add_theme_support( 'html5', array( 'comment-list', 'comment-form', 'search-form', 'gallery', 'caption', 'style', 'script' ) );
// 支持自定义 LOGO
add_theme_support( 'custom-logo', array(
'height' => 100,
'width' => 400,
'flex-height' => true,
'flex-width' => true,
) );
// 加载主题的文本域,用于翻译
load_theme_textdomain( 'my-professional-theme', get_template_directory() . '/languages' );
}
?> 安全にスクリプトやスタイルを読み込む方法
CSSやJavaScriptファイルを直接、ハードコードで読み込むことは絶対にしてはいけません。必ずWordPressが提供する方法を使用してください。 wp_enqueue_scripts フックを使用して資産を正しく、安全にキューに追加(エンキュー)します。これにより依存関係の管理が行われ、競合が回避されます。
<?php
add_action( 'wp_enqueue_scripts', 'my_theme_scripts' );
function my_theme_scripts() {
// 引入主样式表 style.css
wp_enqueue_style( 'my-theme-style', get_stylesheet_uri(), array(), '1.0.0' );
// 引入自定义 CSS 文件
wp_enqueue_style( 'my-theme-custom', get_template_directory_uri() . '/assets/css/custom.css', array('my-theme-style'), '1.0.0' );
// 引入导航菜单响应式脚本(依赖于 jQuery)
wp_enqueue_script( 'my-theme-navigation', get_template_directory_uri() . '/assets/js/navigation.js', array('jquery'), '1.0.0', true );
// 为脚本添加国际化支持(如果前端需要翻译字符串)
wp_localize_script( 'my-theme-navigation', 'myThemeConfig', array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
));
}
?> コアテンプレートファイルの構築
WordPressはテンプレート階層(Template Hierarchy)を利用して、特定のページタイプにどのテンプレートファイルを読み込むかを決定します。以下の基本ファイルを作成することが、テーマの構造を構築するための第一歩です。
ウェブサイトのグローバルヘッダーとグローバルフッター
header.php このファイルには、各ページの上部で共通に使用されるコードが含まれています。それには、DOCTYPE宣言などが含まれます。 エリア(通じて) wp_head() (出力)および冒頭の構造です。それは以下のようになるべきです: 開始し、主要な包装容器を開けることで終了します。
footer.php このファイルには、ページの下部に表示される共通のコード(著作権情報など)が含まれており、ファイルの最後にそのコードが実行されます。 wp_footer() フックです。これら2つのファイルは以下のようにして連携しています: get_header() と get_footer() この関数は他のテンプレート内で呼び出されています。
記事索引とコンテンツ詳細ページ
index.php これは最後のテンプレートのバックアップ案ですが、通常はブログの記事一覧ページとして使用されます。このテンプレートには、複数の記事を一覧表示するためのメインループ(The Loop)が含まれているはずです。
single.php 単一のブログ記事を表示するためのものです。このテンプレートは、記事の全体のレイアウトを担当しており、タイトル、本文、メタデータ(著者、日付、カテゴリ)、そしてコメント用のテンプレートを含みます。
page.php 静的なページを表示するために使用されます。通常、公開日時やカテゴリなどのメタ情報は含まれておらず、その構造は… single.php 似ているけど、もっと簡潔です。
推薦図書 ワードプレステーマ開発の究極ガイド: カスタムウェブサイトの構築を始めるための入門編から上級編まで。
文章内容循环的标准写法
ループはWordPressにおけるコンテンツ出力の核心です。以下は… index.php 中ループの標準的な例:
<?php
if ( have_posts() ) :
while ( have_posts() ) : the_post(); ?>
<article id="post-<?php the_ID(); ?>" no numeric noise key 1008>
<header class="entry-header">
<h2 class="entry-title"><a href="/ja/</?php the_permalink(); ?>">あなたのウェブサイトのタイトルを表示するには、次のコードを使用してください。</a></h2>
<div class="entry-meta">
</div>
</header>
<div class="entry-content">
<?php the_excerpt(); // 或使用 the_content() 显示全文 ?>
</div>
</article>
<?php endwhile;
the_posts_navigation(); // 输出上一页/下一页链接
else :
get_template_part( 'template-parts/content', 'none' ); // 加载一个“无内容”的模板部分
endif;
?> 高度な機能とテーマカスタマイズ
専門的なテーマは、コンテンツを表示するだけでなく、ユーザーや管理者に柔軟なカスタマイズオプションも提供します。
登録ナビゲーションメニューとサイドバー
ナビゲーションメニューはこちらからご利用いただけます。 register_nav_menus() 関数の登録についてです。通常、あるテーマにはメインメニューとフッターメニューが存在します。
<?php
add_action( 'after_setup_theme', 'my_theme_register_menus' );
function my_theme_register_menus() {
register_nav_menus( array(
'primary' => __( 'Primary Menu', 'my-professional-theme' ),
'footer' => __( 'Footer Menu', 'my-professional-theme' ),
) );
}
?> はい。 header.php ここでは、「使用」を使っています。 wp_nav_menu() メインメニューが表示されます。
サイドバー(ツールバー領域)はこちらからアクセスできます。 register_sidebar() 関数の登録です。異なる場所に表示するためのサイドバーを複数登録することができます。
__( 'Main Sidebar', 'my-professional-theme' ),
'id' => 'sidebar-1',
'description' => __( 'Add widgets here.', 'my-professional-theme' ),
'before_widget' => '<section id="%1$s" class="widget %2$s">',
'after_widget' => '</section>',
'before_title' => '<h2 class="widget-title">',
'after_title' => '</h2>',
) );
}
?> カスタマイザーAPIの統合
WordPressのカスタマイザー(Customizer)APIにより、ユーザーはリアルタイムでテーマの設定を調整することができます。LOGOやフッターテキストなどに関するオプションを追加することも可能です。
あなたは以下の方法で… customize_register フックを使用すると、カスタム設定やコントロール項目を追加することができます。これにより、WordPressのテーマカスタマイザーに新しい設定項目、コントロール項目、またはセクションを追加することが可能になります。
カスタムページテンプレートの作成
ページテンプレートを使用すると、特定のページに独自のレイアウトを設定することができます。例えば、以下のようなファイルを作成してください: templates/full-width.phpそして、ファイルのヘッダーに以下のコメントを追加してください:
推薦図書 WordPressテーマ開発入門ガイド:カスタムテーマをゼロから構築する。
<?php
/**
* Template Name: 全宽页面
* Description: 一个没有侧边栏的全宽页面模板。
*/ その後、WordPressの管理画面でページを編集する際に、「ページ属性」から「全幅ページ」テンプレートを選択できます。テンプレートファイルの中では、以下の手順に従ってください: page.php その構造の書き方については説明しますが、サイドバーを取得するためのコードは省略してください。
パフォーマンスの最適化とリリース準備
テーマの開発が完了したら、必ず最適化を行い、高速で安全かつ標準に準拠していることを確認してください。
コードの最適化とセキュリティチェック
すべてのユーザー入力および動的な出力に対して、WordPressのエスケープ処理(escaping)およびサニタイゼーション(sanitization)機能を使用してください。 esc_html(), esc_url(), sanitize_text_field()。すべての翻訳可能な文字列が正しく使用されていることを確認してください。 __() または _e() 関数をラップし、テキストフィールドを正しく設定してください。デバッグコードはすべて削除してください。 var_dump() または print_r()。
フロントエンドリソースのパフォーマンス最適化
CSSおよびJavaScriptファイルを最小化(minify)し、統合(開発環境では元のファイルを保持する)するには、以下の方法を使用できます。 add_image_size() 関数を使用して画像のサイズを適切に設定し、フロントエンドで過大な画像を読み込むのを防ぎましょう。テーマがレスポンシブであることを確認し、さまざまなデバイスで正常に表示されるようにしてください。また、条件付きでスクリプトを読み込むことも検討してください。例えば、コメントが必要なページでのみコメント返信用のスクリプトを読み込むようにするのです。
<?php
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
?> トピックの最終チェックリスト
公開する前に、Theme Checkプラグインを使用してテーマをスキャンし、WordPressのテーマディレクトリの最新要件に準拠していることを確認してください。異なるPHPバージョン(7.4、8.0、8.1+)およびWordPressバージョンでテストを行いましょう。さらに、Chrome、Firefox、Safari、Edgeといったさまざまなブラウザや、実際のモバイルデバイスでレスポンシブレイアウトが正しく機能するかをテストしてください。詳細なテスト結果も準備しておくとよいでしょう。 readme.txt テーマの機能、インストール手順、更新ログについて説明したドキュメント。
概要
ゼロからプロフェッショナルなWordPressテーマを構築することは、体系的な作業です。開発者はPHP、HTML、CSS、JavaScriptの知識だけでなく、WordPressのコアコンセプト(テンプレートの階層構造、ループ処理、フック(Hooks)、APIなど)も深く理解している必要があります。プロセスは環境の構築や基本ファイルの設定から始まり、徐々にコアテンプレートや高度な機能を構築していき、最終的にはパフォーマンスの最適化と厳格なテストで完成します。WordPressのコーディングスタンダードやベストプラクティス(スクリプトの正しい実行順序の設定、翻訳サポートの実装、セキュリティ対策など)を遵守することが、テーマの高品質、メンテナビリティ、そして広い人気を確保するための鍵となります。このガイドの手順に従えば、現代のWeb基準に準拠し、見た目も機能も優れたプロフェッショナルレベルのテーマを作成することができるでしょう。
FAQ よくある質問
WordPressのテーマ開発において、サブテーマ(子テーマ)を使用する必要がありますか?
必ずしもそうとは限りません。完全に新しいテーマをゼロから構築する場合、作成されるのは「親テーマ(Parent Theme)」です。子テーマ(Child Theme)は、既存の親テーマをベースにカスタマイズや修正を行うために使用され、親テーマのコアファイルを変更する必要はありません。この方法の利点は、親テーマがアップデートされても、自分が加えたカスタマイズ内容が失われないことです。新しい開発プロジェクトの場合は、親テーマを直接作成することもできます。
functions.phpファイルにはどのような特別な役割がありますか?
functions.php このファイルはWordPressテーマの中核的な機能を担うファイルです。まるでプラグインのように、テーマが有効になると自動的に読み込まれます。ここには、テーマがサポートする機能を追加したり、メニューやサイドバーを登録したり、スクリプトやスタイルの読み込み順序を管理したり、カスタム関数を定義したり、WordPressのさまざまなアクションやフィルターにフックを設定したりすることができます。テーマの動作を拡張したりカスタマイズしたりするための主要な場所となっています。
どうやって私のテーマを多言語対応(国際化)にするか?
テーマを多言語に対応させるには主に3つのステップがあります。まず、テーマ内のすべてのユーザー向けのテキストにおいて、WordPressの翻訳機能を使用する必要があります。例えば: __('Text', 'your-text-domain') または _e('Text', 'your-text-domain')次に、 style.css と functions.php 正しくテキストドメイン(Text Domain)を宣言し、それを使用してください。 load_theme_textdomain() 関数が翻訳ファイルを読み込みます。最後に、Poeditのようなツールを使用して翻訳を行います。 .pot テンプレートファイルに基づいて、翻訳者は異なる言語のコンテンツを生成することができます。 .po と .mo そのファイルは、トピック内に保存されています。 /languages/ ディレクトリ内にあります。
なぜJavaScriptファイルを追加する際に`wp_enqueue_script`を使用しなければならないのでしょうか?
利用する wp_enqueue_script()(およびそれに対応するもの) wp_enqueue_style()これはWordPress公式で推奨されている、フロントエンドリソースを導入するための唯一正しい方法です。この方法では、スクリプトとスタイルシートの依存関係が適切に処理され、正しい順序で読み込まれます。同じライブラリ(例えばjQuery)を何度も読み込むことによる競合を避けることができ、WordPressのキャッシュ機能や最適化メカニズム(スクリプトの連結や圧縮など)とも互換性があります。直接使用してください。 または タグをテンプレートに硬コードするのは間違ったやり方であり、問題を引き起こす可能性があります。
テーマをWordPressの公式ディレクトリに提出する前に、何が必要ですか?
WordPress.orgの公式テーマディレクトリにテーマを提出するには、一連の厳格な要件を満たす必要があります。ご使用のテーマはGNU GPLライセンスに100%準拠していなければなりません。Theme Checkプラグインのテストに合格し、エラー(ERRORS)は一切なく、警告(WARNINGS)もできるだけ少なくする必要があります。コードはWordPressのコーディングスタンダードに従っていなければなりません。また、テーマはレスポンシブデザインでなければならず、ツールバー、メニュー、特別な画像などがなくても正常に表示されるようになっている必要があります(エレガントなデグレード機能が必要です)。さらに、著作権の問題のない高品質なスクリーンショットを提供し、明確な説明文を作成する必要があります。 readme.txt トピックの説明にもあるように、2026年の基準ではアクセシビリティ(障害者への配慮)やパフォーマンスに対する要求もより厳しくなる可能性があります。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。