開発環境の構築とプロジェクトの初期化
カスタムWordPressテーマの構築を始める前に、効率的な開発環境を構築することが重要な第一歩です。これにより、コードが標準化されるだけでなく、開発効率とデバッグ体験が大幅に向上します。
ローカル開発環境の構築
Local by Flywheel、MAMP、XAMPPなど、PHP、MySQL、Apache/Nginxが動作する環境をコンピュータに素早くセットアップできるローカル・サーバー・ソフトウェアを使用することをお勧めします。Local by Flywheelをインストールした後、WordPressの最新バージョンをダウンロードしてインストールします。 wp-content/themes フォルダーに新しいフォルダーを作成します。 my-custom-themeこれがテーマのルート・ディレクトリになる。
テーマのコアファイルの作成
最小限のWordPressテーマで必要なファイルは2つだけです:style.css と index.php.まず、以下を作成する。 style.css ファイルで、スタイルを定義するだけでなく、より重要なのは、ファイルのヘッダーにあるコメント情報によってWordPressにテーマを宣言することだ。
推薦図書 ワードプレステーマ開発の究極ガイド:ゼロからカスタムワードプレスウェブサイトテーマの作成。
/*
Theme Name: My Custom Theme
Theme URI: https://yourdomain.com/
Author: Your Name
Author URI: https://yourdomain.com/
Description: 一个从零开始构建的自定义 WordPress 主题。
Version: 1.0.0
License: GPL v2 or later
Text Domain: my-custom-theme
*/ Text Domain を国際化のために作成します。これは、その後の翻訳テキストの識別子として使用されます。その直後に、最も基本的な index.php ファイルで、シンプルなHTML構造から始めることができる。これら2つのファイルが完成したら、WordPressバックエンドの「外観」→「テーマ」で空白のテーマを確認し、有効にすることができます。
テーマの構造とテンプレートの階層
WordPressのテンプレート階層を理解することは、テーマ開発の核心です。WordPressがさまざまなリクエスト(投稿ページ、ページ、カテゴリーアーカイブなど)に基づいて、対応するテンプレートファイルを自動的に選択してレンダリングする方法を決定します。
コア・テンプレート文書とその役割
WordPressはテンプレートファイルを特定の順番で探します。最も基本的なプロセスは、最も特定のテンプレートから最も一般的なテンプレートにフォールバックすることです。例えば、個々の投稿にアクセスする場合、WordPressはそれを順番に探します:single-post-{id}.php, single-post.php, single.phpそして最後に、 singular.phpどちらも見つからない場合は index.php.同様に、ホームページは最初に front-page.phpそして、それからこそ home.php.この階層をマスターすれば、特定のテンプレートファイルを作成することによって、さまざまなページのレイアウトを正確にコントロールすることができる。
共通テンプレートファイルの作成
それに加えて、 index.php完全なテーマ構造を構築するために、以下の主要なテンプレートファイルを段階的に作成する必要があります:
- header.phpウェブサイトのヘッダー。 <head> エリアとトップナビゲーション。
- footer.php:: ウェブサイトの一番下。
- sidebar.phpサイドバー。
- functions.php: 機能追加、登録メニュー、ウィジェットエリアなどのためのテーマの機能ファイル。
- page.php単一ページのレンダリングに使用。
- single.php`: 単一の記事をレンダリングするために使用されます。
- archive.phpカテゴリ、タグ、著者などのアーカイブページをレンダリングするために使用されます。
はい。 index.php を使用することができます。 get_header(), get_footer(), get_sidebar() などのテンプレート・タグを使うことで、モジュール化されたセクションを導入し、コードの再利用を可能にする。
推薦図書 WordPressテーマ開発の詳細解析:初心者から上級者までの核心技術ガイド。
コア機能とテーマオプション
functions.php このファイルはテーマの「頭脳」であり、すべてのバックエンドロジックと機能拡張が行われます。テーマが初期化されると自動的に読み込まれます。
テーマのサポートと登録を追加
とおす add_theme_support() 関数では、テーマがサポートするさまざまな機能を宣言できます。例えば、投稿のサムネイル(特集画像)を有効にすることは、最近のテーマでは標準的なことです。
function my_theme_setup() {
// 添加文章和评论的 RSS feed 链接到 head
add_theme_support( 'automatic-feed-links' );
// 启用文章缩略图功能
add_theme_support( 'post-thumbnails' );
// 启用自定义菜单功能
add_theme_support( 'menus' );
// 让 WordPress 管理文档标题
add_theme_support( 'title-tag' );
// 启用对古腾堡编辑器的宽对齐和颜色支持
add_theme_support( 'align-wide' );
add_theme_support( 'editor-color-palette', array( /* ... */ ) );
}
add_action( 'after_setup_theme', 'my_theme_setup' ); また、ナビゲーションメニューの位置とウィジェットエリア(サイドバー)を登録する必要があります。
関数 my_theme_menus() {
register_nav_menus( array(
'primary' => __( 'primary navigation menu', 'my-custom-theme' )、
'footer' => __( 'bottom_menu', 'my-custom-theme' )、
) );
}
add_action( 'init', 'my_theme_menus' );
ファンクション my_theme_widgets_init() {
register_sidebar( array(
'name' => __( 'Main Sidebar', 'my-custom-theme' )、
'id' => 'sidebar-1'、
'description' => __( 'Add widget here., 'my-custom-theme' ), 'description' => __( 'before_widget.
'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_theme_widgets_init' ); スタイルシートおよびスクリプトファイルの導入
リソースを紹介する正しい方法は wp_enqueue_style() と wp_enqueue_script() 関数を、それらをマウントするようにします。 wp_enqueue_scripts フックに。
function my_theme_scripts() {
// 引入主样式表
wp_enqueue_style( 'my-theme-style', get_stylesheet_uri(), array(), wp_get_theme()->get('Version') );
// 引入自定义 JavaScript 文件
wp_enqueue_script( 'my-theme-navigation', get_template_directory_uri() . '/js/navigation.js', array(), wp_get_theme()->get('Version'), true );
// 如果评论功能开启且是单篇文章/页面,加载评论回复脚本
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) {
wp_enqueue_script( 'comment-reply' );
}
}
add_action( 'wp_enqueue_scripts', 'my_theme_scripts' ); ループとテンプレート・タグ
“ループは、WordPressがデータベースからコンテンツを取得し、ページに表示するために使用するデフォルトのメカニズムです。ループを正しく理解し使用することは、動的なコンテンツ表示の基礎となります。
標準サイクルの構造
テンプレートファイルでは、WordPressのメインループである以下のようなコード構造をよく見かけます。
推薦図書 WordPressテーマ開発入門から上級者へ:ゼロからカスタムテーマを構築する。
<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>
</header>
<div class="entry-content">
あなたが送信したメッセージは長すぎます。最大300文字まで送信できます。
</div>
</article>
<p><?php _e( '抱歉,没有找到任何内容。', 'my-custom-theme' ); ?></p>
endif; 終わり have_posts() と the_post() 関数はループを制御する。the_title(), the_content(), the_permalink() などのテンプレートタグは、現在の記事に関する特定の情報を出力するために使われます。ループの外では is_home(), is_single(), is_page() などの条件タグで現在のページタイプを判断し、異なるロジックを実行します。
カスタムクエリとループ
特定のカテゴリーの記事など、メインループの一部ではないコンテンツをトップページに表示する必要がある場合があります。その場合は WP_Query クラスを使用してカスタムクエリを作成します。
<?php
$custom_query = new WP_Query( array(
'category_name' => 'featured',
'posts_per_page' => 3,
) );
if ( $custom_query->have_posts() ) :
while ( $custom_query->have_posts() ) : $custom_query->the_post();
// 输出文章内容...
endwhile;
wp_reset_postdata(); // 重置全局 $post 数据
endif;
?> 概要
WordPressのテーマをゼロから開発するのは、環境構築から構造計画、機能実装、動的コンテンツ表示まで、全工程をカバーするシステマチックなプロジェクトです。その中核となるのが、ページのレンダリングロジックを決定するテンプレート階層の仕組みの理解である。 functions.php テーマの機能を拡張し、データをエクスポートするための「ループ」の要をマスターしましょう。リソースを正しく取り込み、翻訳機能を使用し、適切なテーマサポートを追加するなど、WordPressのコーディング標準とベストプラクティスに従うことで、テーマが堅牢で、効率的で、メンテナンスしやすくなります。このガイドのステップに従うことで、より高度な開発のための強固な基盤となる、十分に構造化され、十分に機能するカスタムテーマを構築することができます。
FAQ よくある質問
###: WordPressテーマを開発するには、どのようなコア技術をマスターする必要がありますか?
PHP(バックエンドロジックとテンプレート)、HTML/CSS(構造とスタイル)、JavaScript(インタラクション)の基本的な知識が必要です。最も重要なことは、テンプレート階層、フック、アクションとフィルター、ループ、WordPressが提供するさまざまな関数やクラスなど、WordPressの中核となる概念を理解していることです。
どうやって私のテーマをGutenbergエディタに対応させることができますか?
まず、 functions.php ここで使用されているのは add_theme_support() 以下のような関連機能を有効にする。 editor-styles、align-wide とカスタムカラーパネルを作成する。次に、エディター専用のスタイルシートを add_editor_style() 関数が導入され、バックエンドエディタのビジュアルエクスペリエンスがフロントエンドと一貫するようになりました。また、ブロックスタイルやカスタムブロックを作成して、より豊富な編集機能を提供することもできます。
テーマ開発で多言語サポートを実装するには?
WordPressは国際化(i18n)のためにGNU gettextフレームワークを使用しています。コードでは、翻訳が必要なすべてのテキストは、次のような特定の関数でラップする必要があります。 () を PHP で翻訳する。_e() 翻訳され、直接表示される。esc_html() はHTMLの翻訳とエスケープに使われ、JavaScriptではHTMLの翻訳とエスケープに使われる。 wp.i18n.__()その後、Poeditなどのツールを使ってテキストを抽出し、.potファイルを生成し、.poファイルや.moファイルに翻訳します。その後、Poeditなどのツールを使ってテキストを抽出し、.potファイルを生成し、.poファイルと.moファイルに翻訳する。最後に style.css ヘッダーの設定が正しくなっています。 Text Domain で始まる。 functions.php ここで使用されているのは load_theme_textdomain() 翻訳ファイルを読み込む。
自分のテーマにカスタム設定ページを追加するにはどうすればいいですか?
簡単なオプションであれば、直感的なライブプレビューインターフェースを提供するWordPressのビルトインカスタマイザーAPIを使用することができます。より複雑なニーズには、オプションページベースの設定インターフェイスを作成できます。設定を安全に登録、検証、保存するには、WordPress Settings API を使用することをお勧めします。また、Advanced Custom Fields (ACF) や Carbon Fields など、カスタムフィールドやオプションページの作成プロセスを大幅に簡素化するサードパーティライブラリを使用することもできます。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。