標準化された製品ページはエラーが発生することはありませんが、激しい市場競争の中で商品を際立たせるのは難しいです。WooCommerceの製品テンプレートをカスタマイズすることで、ページレイアウトや情報の表示順序、ユーザー体験の流れを完全にコントロールでき、訪問者を購入プロセスへと導き、コンバージョン率を大幅に向上させることができます。このチュートリアルでは、テンプレートの構造を理解することから実際の開発、さらには高度な最適化のコツまで、安全かつ効率的にカスタムテンプレートを作成する方法を丁寧に教えます。
WooCommerceのテンプレートシステムの解析
実際に修正を始める前に、WooCommerceのテンプレートの階層構造を理解することが非常に重要です。これにより、カスタマイズした内容が効果的でありながらもメンテナンスしやすいものになるからです。
WooCommerceは、テーマの階層構造(Template Hierarchy)に基づいたテンプレートシステムを使用しています。ストアページをレンダリングする際に、WooCommerceは特定の順序でテンプレートファイルを探します。その主要な検索パスは以下の通りです:你的主题目录 -> 插件的模板目录。
推薦図書 WooCommerceの顧客メタデータとは何か、そしてなぜそれらを管理する必要があるのでしょうか?。
より具体的に言うと、WooCommerceはまず、現在使用しているテーマフォルダ内で「`wp-content/themes/your-current-theme-name```という名前のファイルを探します。 woocommerce そのサブディレクトリ内にあるテンプレートファイルです。もしトピック内に該当するテンプレートファイルが存在しない場合、プラグインが自体で持っているテンプレートファイル(以下の場所にあります)に切り替わります: wp-content/plugins/woocommerce/templates/この仕組みにより、テーマ内に対応するファイルを作成することでデフォルトのテンプレートを安全に上書きできます。プラグインのコアファイルを直接変更する必要がなく、プラグインがアップデートされてもカスタマイズした内容が失われることはありません。
キーテンプレートファイルの位置特定
製品詳細ページにおいて、最も重要なテンプレートファイルは single-product.phpこのファイルは、製品ページ全体の枠組みを制御しています。その中には、通常、以下のような内容が含まれています: wc_get_template_part() この関数は、製品画像、タイトル、価格、概要、属性、タブ、フォームなど、より詳細な情報を含むテンプレートの部分を読み込みます。
あなたが注目すべき主要なテンプレートファイルは、通常、テーマの設定フォルダ内にあります。 woocommerce サブディレクトリ内から、またはプラグインのテンプレートディレクトリから直接コピーされます。例えば、製品画像の表示領域はそこから取得されます。 single-product/product-image.php 「コントロールについては…」とありますが、ショッピングカートフォームに追加する処理については説明がありません。 single-product/add-to-cart.php 管理。この構造を理解すれば、ページの任意の部分を正確に特定し、修正することができます。
カスタム製品テンプレートを作成する3つの方法
あなたの技術力やカスタマイズのニーズに応じて、異なる複雑さを持つ方法を選択してカスタムテンプレートを実現することができます。
サブトピックを使用してセキュリティ設定を上書きする
これが最も推奨される、最も安全な方法です。サブテーマ(Child Theme)を作成し、そのサブテーマフォルダ内にWooCommerceのテンプレートの階層構造と一致するディレクトリ構造を作成してください。
例えば、製品のメインテンプレートを上書きするには、サブテーマ内で以下のパスを作成する必要があります:your-child-theme/woocommerce/single-product.phpその後、プラグイン内の元のコードを… single-product.php ファイルの内容をコピーしてきて、その上で修正を加えてください。そうすることで、親テーマが更新されても、WooCommerceのカスタマイズ部分は保持されます。
推薦図書 ゼロから始める多目的WordPressブログ:ハンズオン。
ページビルダープラグインを使用して実現します。
コードに不慣れな場合は、Elementor Pro、Divi Builder、WPBakeryといった高度なページビルダーを使用すると良いでしょう。これらのツールには、WooCommerceの商品テンプレートを視覚的に編集する機能が備わっています。ツール内でタイトル、ギャラリー、価格、フォームなどのコンポーネントを直接ドラッグ&ドロップしてスタイルを設定し、それをすべての商品や特定の商品カテゴリに適用することができます。この方法は迅速で直感的ですが、特定のプラグインに依存する場合があり、ページの読み込み時間が長くなる可能性があります。
カスタムテンプレートファイルを作成し、それを適切な場所に配置してください。
より複雑でユニークなレイアウトの場合は、新しい、独立したテンプレートファイルを作成することができます。テーマフォルダ内に新しいファイルを作成してください。例えば、 single-product-custom.phpこのファイルの最上部に、その名前を宣言するための特定のテンプレートヘッダーコメントを追加する必要があります。
<?php
/**
* Template Name: 自定义产品布局
* Template Post Type: product
*/
get_header(); // 调用主题头部
?>
// ... 你的自定义HTML和PHP代码 ...
<?php get_footer(); // 调用主题底部 ?> 作成が完了すると、WordPressの管理画面で個々の商品を編集する際に、「ページ属性」または「テンプレート」のドロップダウンリストから、先ほど作成した「カスタム商品レイアウト」を見つけて選択することができます。
実戦:カスタム製品ページレイアウトの例
具体的なケーススタディを通じて学びましょう。どのようにして製品ページの要素を再配置し、「カートに追加」フォームを製品画像の横に移動させて、購入を促すアクションを目立たせるかを見ていきます。
まず、あなたのサブトピックについて… woocommerce ディレクトリ内でファイルを作成するか、コピーする。 single-product.phpこのファイルのロジックを再構築する必要があります。
元のテンプレートでは、各部分が通常順番に読み込まれます。私たちが行う必要があるのは、これらの部分の呼び出し方を再整理することです。以下は、2列レイアウトを作成する方法を示す簡略化されたサンプルコードです:
推薦図書 WordPressカスタム投稿タイプ究極ガイド: ゼロからマスターまで!。
// 文件路径:your-child-theme/woocommerce/single-product.php
while ( have_posts() ) : the_post(); ?>
<div id="product-<?php the_ID(); ?>" no numeric noise key 1007>
<div class="custom-product-container">
<!-- 左栏:主要放图片和摘要 -->
<div class="product-left-column">
<?php
// 输出产品图片
do_action( 'woocommerce_before_single_product_summary' );
?>
</div>
<!-- 右栏:主要放标题、价格、表单和元信息 -->
<div class="product-right-column">
<?php
// 输出产品摘要内容,但我们需要调整内部顺序
?>
<div class="summary entry-summary">
<?php
// 1. 先输出标题
woocommerce_template_single_title();
// 2. 立即输出价格
woocommerce_template_single_price();
// 3. 紧接着输出“添加到购物车”表单
woocommerce_template_single_add_to_cart();
// 4. 再输出摘要描述
woocommerce_template_single_excerpt();
// 5. 输出元信息(如SKU、分类)
woocommerce_template_single_meta();
?>
</div>
</div>
</div>
<div class="product-full-width">
<?php
// 产品详情选项卡(描述、额外信息、评论)仍放在底部全宽显示
do_action( 'woocommerce_after_single_product_summary' );
?>
</div>
</div>
<?php endwhile; // end of the loop. ?> 次に、2列レイアウトを作成するための適切なCSSを追加する必要があります。以下のCSSをサブテーマに追加してください。 style.css ファイルの中に:
.custom-product-container {
display: flex;
flex-wrap: wrap;
gap: 40px;
margin-bottom: 60px;
}
.product-left-column {
flex: 1;
min-width: 300px;
}
.product-right-column {
flex: 1;
min-width: 300px;
}
.product-full-width {
flex-basis: 100%;
}
.summary entry-summary .cart {
margin: 25px 0; /* 给购物车表单增加上下边距 */
} 高度な最適化テクニックとベストプラクティス
基本的なレイアウトの調整はほんの始まりに過ぎません。以下のコツを活用することで、ページのコンバージョン効果をさらに高めることができます。
アクションフックを利用してコンテンツを追加・削除する
WooCommerceのテンプレートには多数のアクションフック(Action Hooks)が含まれており、これらを利用することでテンプレートファイルを直接変更することなく、特定の場所にコンテンツを追加したり削除したりできます。例えば、商品価格の下に「在庫不足」という表示を追加したい場合は、サブテーマ内で対応するアクションフックを利用するとよいでしょう。 functions.php 「中に追加する:」
add_action( 'woocommerce_single_product_summary', 'custom_stock_notice', 15 );
function custom_stock_notice() {
global $product;
if ( $product->get_stock_quantity() < 10 && $product->get_stock_quantity() > 0 ) {
echo '<p class="low-stock" style="color:#d33;">🔥 库存紧张,仅剩 '. $product->get_stock_quantity() .' 件!</p>';
}
} ここでは、woocommerce_single_product_summary これはフックの名前です。15 これは優先順位を示すもので(数字が小さいほど早く実行されます)、出力位置を制御するために使用されます。
異なる製品タイプにはそれぞれ適したテンプレートを使用する。
WooCommerceの条件分岐機能を活用することで、シンプルな製品、変動する製品、グループ化された外部製品や関連製品など、さまざまなタイプの製品に対して差別化された表示を実現できます。例えば、カスタムされたテンプレートや機能を通じて…… single-product.php その中で、次のように判断することができます:
global $product;
if ( $product->is_type( 'variable' ) ) {
// 加载为可变产品优化的模板部分
wc_get_template_part( 'single-product/add-to-cart', 'variable' );
} else if ( $product->is_type( 'grouped' ) ) {
// 加载为分组产品优化的模板部分
wc_get_template_part( 'single-product/add-to-cart', 'grouped' );
} else {
// 加载简单产品的默认表单
wc_get_template_part( 'single-product/add-to-cart', 'simple' );
} モバイル端末向けのレスポンシブなユーザー体験を確実に実現すること。
カスタムレイアウトを作成する際には、モバイル端末での表示を必ずテストする必要があります。上記の例で使用されているFlexboxレイアウトは、応答性に優れています。画面の幅が狭くなると(例えばモバイルデバイスでは)、2つの列を1つの列に折りたたみたいと思うかもしれません。これはメディアクエリを使用して実現できます。
@media (max-width: 768px) {
.custom-product-container {
flex-direction: column;
gap: 20px;
}
} 概要
WooCommerceの製品ページテンプレートをカスタマイズすることは、標準化からパーソナライゼーションへ、表示から購入へと移行するための重要なステップです。WooCommerceのテンプレート構造を理解し、サブテーマを利用したセキュリティ対策を採用することで、ページ要素を自由に再配置し、重要な情報や購入を促す要素を際立たせることができます。シンプルなフック関数を使ってヒントを表示するだけでなく、テンプレートファイルを完全に書き換えて独自のレイアウトを作成することも可能です。その目的は、ユーザーの意思決定の障害を減らし、購入プロセスをスムーズに完了できるようにすることです。変更を加えた後は、必ずデバイスやブラウザを横断したテストを行い、ヒートマップなどのデータ分析ツールを活用して変更の効果を確認し、製品ページを継続的に最適化してください。
FAQ よくある質問
カスタムテンプレートを作成した後、WooCommerceのプラグインをアップデートすると、私が加えた変更内容は上書きされてしまいますか?
いいえ、その前提はあなたが正しい方法を採用していることです。もしあなたが(サブ)トピック内でそれを行ったのであれば… woocommerce ディレクトリ内にコピーファイルを作成してデフォルトのテンプレートを上書きすることで、WooCommerceプラグインのアップデートがカスタムファイルに一切影響を与えなくなります。これは、WooCommerceがテンプレートを読み込む際に、テーマ内にあるバージョンを優先的に使用するからです。これが最も安全な方法です。
特定の製品カテゴリーにのみカスタムテンプレートを適用するにはどうすればよいですか?
これにはいくつかの追加的なコードロジックが必要です。一つの方法としては、あなたのカスタムテンプレートファイル(例えば…)に以下のようなコードを追加することです: single-product.php条件判断を使用して処理を行います。まず、現在の製品のカテゴリを取得し、その結果に基づいて異なるテンプレートの部分を表示します。例えば:if ( has_term( 't-shirts', 'product_cat' ) ) { ... }もう一つの柔軟な方法としては、「カスタムテンプレートの割り当て」機能を利用して複数のテンプレートファイルを作成し、サードパーティのプラグインやカスタムフィールドを通じて異なるカテゴリの製品に適したテンプレートを選択する方法があります。
テンプレートを修正したにもかかわらず、フロントエンドに変更が反映されない場合、どのように問題を調査すればよいでしょうか?
以下の手順に従って確認してください。まず、変更を加えたのが正しいファイルであること、そしてそのファイルがアクティブな(サブ)テーマの正しいパスにあることを確認してください(例: your-theme/woocommerce/single-product.php次に、WordPressおよびブラウザのキャッシュを削除してください。古いキャッシュファイルが新しいコードの読み込みに影響を与えることがあります。その後、他のプラグイン(特にキャッシュや最適化用のプラグイン)やテーマの機能があなたの変更を上書きしていないかを確認してください。最後に、ブラウザの開発者ツール(F12キー)を開いてコンソールを確認し、JavaScriptエラーがないか、また追加したCSSセレクターが正しく適用されているかをチェックしてください。
製品ページにカスタムフィールドを使用して、追加情報の表示エリアを追加することはできますか?
もちろんです。これは非常に一般的な要求です。まず、Advanced Custom Fieldsのようなプラグインを使用するか、コードを使って「製品」記事タイプに「製品の特徴」などのカスタムフィールドを作成する必要があります。次に、カスタム製品テンプレート内で、その情報を表示したい場所(例えば、製品の概要の後やタブの前など)に、以下のようなコードを呼び出して表示します: echo get_field('product_highlights'); そのフィールドの値を出力するためのコードを使用することで、テンプレート内でバックエンドで編集された追加情報を動的に表示することができます。
次はどうする?
拡大読書と実践的知識
以下は、この記事のトピックに関連しており、さらに深く読むのに適している。あなたの現在の問題に最も近い記事から優先順位をつけ、徐々に周辺のトピックに広げていく方が良い場合が多い。