WooCommerce製品ページをプログラムで編集する方法
公開: 2021-01-09eコマースストアの商品ページをカスタマイズする方法をお探しですか? このガイドでは、 WooCommerceの製品ページをプログラムで編集する方法を紹介します。
製品ページのカスタマイズ
ストアでは何でもカスタマイズできますが、WooCommerceでほとんどのカスタマイズが行われる2つのメインページは、ショップページと製品ページです。 売り上げを伸ばし、購入プロセスの開始を最適化したい場合は、両方に取り組む必要があります。 ショップページをカスタマイズする方法はすでに見てきたので、今日はプログラムで(コードを使用して)製品ページを編集する方法を紹介します。
最高のカスタマーエクスペリエンスを提供することに重点を置いたすっきりとしたデザインは、購入プロセス全体を改善し、コンバージョン率を高めるのに役立ちます。 製品ページをカスタマイズするには、主に2つの方法があります。
- プラグイン付き
- プログラムで
一部のプラグインは役に立ちますが、必要なすべての機能を備えたプラグインを見つけるのは長いプロセスになる可能性があります。 したがって、基本的な開発者スキルがある場合は、WooCommerce製品ページをプログラムで編集することをお勧めします。 サードパーティのツールのインストールを回避できるだけでなく、必要なものをカスタマイズするための柔軟性も大幅に向上します。
プラグインとページビルダーを使用して製品ページをカスタマイズする場合は、このガイドを確認してください。
WooCommerce製品ページをプログラムで編集する方法
このセクションでは、単一製品のWooCommerce製品ページを編集する方法を学習します。 以下のトピックを取り上げます。
- フックを使用する
- 要素を削除します
- 要素を並べ替える
- 新しい要素を追加する
- 条件付きロジックを適用する
- ログインしたユーザーとユーザーの役割
- 製品IDと分類法
- 製品タブの編集
- 可変製品のサポート
- WooCommerceテンプレートファイルを上書きする
- メタ情報を編集する
- 特定の製品カテゴリのカスタムテンプレートに切り替えます
- single-product.phpファイルを編集します
- 新しいcontent-single-product.phpファイルを作成します
- 新しいcontent-single-product.phpファイルを編集するカスタムテンプレートを作成します
- CSSスクリプトを使用した製品ページのカスタマイズ
WooCommerce製品ページのレイアウト
チュートリアルを開始する前に、WooCommerceの単一製品のデフォルトの製品ページを見て、各要素を特定しましょう。 ガイドの後半で参照するため、テンプレートのさまざまなセクションと情報の編成方法に注意してください。 製品ページの出力を担当する2つの主要なWooCommerceファイルがあります。
- single-product.php :現在のレイアウトに必要なテンプレートを作成します
- content-single-product.php :このファイルはテンプレートのコンテンツを印刷します
子テーマを使用して、両方のファイルを上書きできます。 これは、WooCommerceテンプレートファイルを上書きするための一般的な方法です。 ただし、WordPressがサイトをカスタマイズするときに推奨するベストプラクティスの1つであるため、可能な場合はテンプレートファイルを上書きするのではなく、WooCommerceフックを使用するようにしてください。
一方、関数やオブジェクトを含む複雑なタスクの場合は、テンプレートファイルを編集する必要がある場合があります。 両方の手法を組み合わせると、ほぼすべてのカスタマイズを実現できるはずです。 したがって、このチュートリアルでは、両方の方法を使用してWooCommerce製品ページを編集する方法を示します。
始める前に、スクリプトをテストするための子テーマを作成するか、プラグインを使用してスクリプトを生成するようにしてください。 これらのテクニックのそれぞれがあなたの店を最大限に活用するためにどのように機能するかを学ぶことができるように、いくつかの実際的な例を見てみましょう。
1)フックを使用してWooCommerce製品ページを編集します
注:WooCommerceフックとその使用方法に慣れていない場合は、このガイドを確認してください。
1.1)単一の製品ページから要素を削除する
単一の製品ページの要素を削除するために使用できるWooCommerceフックがいくつかあります。 それぞれが特定の要素のグループで機能するため、適切なフック、適切なWooCommerceコールバック関数、および適切な優先度の値を使用する必要があります。
たとえば、すべての製品ページのタイトルを削除する場合は、子テーマのfunctions.php
ファイルで次のスクリプトを使用します。
remove_action(/* hook -> */'woocommerce_single_product_summary', /* callback function ->*/ 'woocommerce_template_single_title', /* position ->*/5 );
すべてのフックとそれに関連するパラメーターは、ここまたはWooCommerceプラグインのcontent-single-product.php
ファイルのコメントにあります。 それでは、さまざまな要素を削除して製品ページをカスタマイズするためのその他のサンプルスクリプトを見てみましょう。
//タイトルを削除します remove_action( 'woocommerce_single_product_summary'、 'woocommerce_template_single_title'、5); //評価星を削除します remove_action( 'woocommerce_single_product_summary'、 'woocommerce_template_single_rating'、10); //製品メタを削除します remove_action( 'woocommerce_single_product_summary'、 'woocommerce_template_single_meta'、40); //説明を削除します remove_action( 'woocommerce_single_product_summary'、 'woocommerce_template_single_excerpt'、20); //画像を削除します remove_action( 'woocommerce_before_single_product_summary'、 'woocommerce_show_product_images'、20); //関連商品を削除します remove_action( 'woocommerce_after_single_product_summary'、 'woocommerce_output_related_products'、20); //追加情報タブを削除します remove_action( 'woocommerce_after_single_product_summary'、 'woocommerce_output_product_data_tabs'、10);
1.2)要素を並べ替える
製品ページの要素の並べ替えは非常に簡単です。 最初に、以前と同じ方法でフックを削除する必要があります。次に、別の優先度/注文番号でフックを再度追加する必要があります。 たとえば、次のスクリプトは、製品の説明をタイトルのすぐ下に移動します。
//説明の順序を変更します remove_action( 'woocommerce_single_product_summary'、 'woocommerce_template_single_excerpt'、20); add_action( 'woocommerce_single_product_summary'、 'woocommerce_template_single_excerpt'、6);
ご覧のとおり、アクションを削除してから、別の優先度(20ではなく6)で再度追加します。 なぜ優先度/順序を6にしたのですか? title要素の優先度の値は5であることがわかっているため、これにより、title(6)の直後にコールバック要素を表示するためにカスタマイズしたフックに割り当てる必要のある優先度の値を知ることができます。
ポイント1.1で提供した情報を使用して、任意のフックとコールバックで同じことを実行し、任意の順序で配置できます。
1.3)新しい要素を追加する
新しいコンテンツを追加してWooCommerce製品ページをカスタマイズする必要がある場合は、テンプレートファイルのオーバーライドを検討する必要があるかもしれません。 ただし、次のフックを使用して新しいコンテンツを追加することもできます。
add_action( 'woocommerce_before_single_product_summary'、function(){ printf( '<h4> <a href="?added-content">おめでとうございます。リンクを追加しました!</a> </ h4>'); } );
または、独自の関数を作成することもできます。
add_action( 'woocommerce_after_single_product_summary'、 'QuadLayers_callback_function'); function QuadLayers_callback_function(){ printf( ' <h1>こんにちは!</ h1> <div> <h5>カスタム製品ページへようこそ</ h5> <h4> <ahref = "?link-to-somewere"> somewereへのリンク!</a> </ h4> <img src = "https://img.freepik.com/free-vector/bird-silhouette-logo-vector-illustration_141216-100.jpg" /> </ div> '); }
1.4)単一の製品ページの条件付きロジック
チェックアウトページで条件付きフィールドを追加する方法は以前に説明しましたが、商品ページに追加することもできます。 WordPressのネイティブ関数を使用して、必要な要件を満たす条件付きロジックを作成できます。 いくつかの例を見てみましょう。
1.4.1)ログインしたユーザーとユーザーの役割
user_is_logged_in()
は、Webサイトの訪問者を検証するために使用されるデフォルトのWordPress関数です。 さらに、 wp_get_current_user()
関数を使用して、ログインしているユーザーに関連するすべての情報を取得できます。 次のスクリプトでは、ユーザーがログインしているかどうかとその役割に基づいてコンテンツを追加しているだけですが、より複雑な機能のためにカスタム関数を追加することもできます
add_action( 'woocommerce_before_single_product'、 'QuadLayers_get_user'); 関数QuadLayers_get_user(){ if(is_user_logged_in()){ $ user = wp_get_current_user(); printf( '<h1> Howdy'。$ user-> user_nicename。 '!</ h1>'); $ roles =(配列)$ user-> roles; if($ roles [0] == 'administrator'){ echo "<h4> <b>あなたは$ roles [0] </ h4> </ b>"; } } それ以外 { array();を返します。 } }
1.4.2)製品IDと分類法
同様に、製品IDや製品カテゴリを取得できます。 違いは、グローバルWP $ postオブジェクトを使用してIDを取得し、 get_the_terms()
関数を使用して製品カテゴリを取得することです。
add_action( 'woocommerce_before_single_product'、 'QuadLayers_get_product_taxonomies'); 関数QuadLayers_get_product_taxonomies(){ グローバル$ post; $ term_obj_list = get_the_terms($ post-> ID、 'product_cat'); $ terms_string = join( '、'、wp_list_pluck($ term_obj_list、 'name')); if($ terms_string == 'ポスター'){ エコー " <h1>これは私たちの最高の$ terms_stringの1つです</ h1> "; echo" <h2>製品ID:$ post-> ID ";}}
上記のスクリプトは単一のカテゴリを返します。 複数のカテゴリまたはタグを取得する必要がある場合は、より複雑な関数を作成する必要があります。 以下に示すように、条件を適用する前に分類法をループする必要があります。
add_action( 'woocommerce_before_single_product'、 'QuadLayers_get_multiple_taxonomies'); 関数QuadLayers_get_multiple_taxonomies(){ グローバル$ post; $ args = array( 'taxonomy' => 'product_tag'、); $ terms = wp_get_post_terms($ post-> ID、 'product_tag'、$ args); $ count = count($ terms); if($ count> 0){ echo '<div class = "custom-content"> <h4>タグリスト:</ h4> <ul>'; foreach($ terms as $ term){echo '<li>'。$ term-> name。 '</ li>';} エコー "</ ul> </ div>"; } }
1.5)製品タブの編集
woocommerce_product_tabs
フィルターフックを使用すると、[追加情報]セクションで新しいタブを削除、追加、並べ替え、または追加できます。 次のスクリプトは、[説明]タブとそのコンテンツを削除し、[レビュー]タブの名前を変更し、[追加情報]の優先度を最初に変更します。
add_filter( 'woocommerce_product_tabs'、 'woo_remove_product_tabs'、98); function woo_remove_product_tabs($ tabs){ unset($ tabs ['description']); // [説明]タブを削除します $ tabs ['reviews'] ['title'] = __( 'Ratings'); // [レビュー]タブの名前を変更します $ tabs ['additional_information'] ['priority'] = 5; //最初の追加情報 $ tabsを返します。 }
タブのコンテンツを編集するには、次のようなコールバック関数を使用する必要があります。
add_filter( 'woocommerce_product_tabs'、 'woo_custom_description_tab'、98); 関数woo_custom_description_tab($ tabs){ $ tabs ['description'] ['callback'] = 'woo_custom_description_tab_content'; //カスタム記述コールバック $ tabsを返します。 } 関数woo_custom_description_tab_content(){ エコー ' <h2>カスタムの説明</ h2> '; echo 'ここ\'カスタムの説明 '; }
同様に、次のように新しいタブを作成できます。
add_filter( 'woocommerce_product_tabs'、 'woo_new_product_tab'); function woo_new_product_tab($ tabs){ //新しいタブを追加します $ tabs ['test_tab'] = array( 'title' => __( '新製品タブ'、 'woocommerce')、 '優先度' => 50、 'コールバック' => 'woo_new_product_tab_content' ); $ tabsを返します。 } 関数woo_new_product_tab_content(){ echo '<h2>新製品タブ</ h2> <p>これが新製品タブのコンテンツです</ p>。'; }
この例では、「NewProductTab」という新しいタブを作成しました。 これがフロントエンドでの外観です。
1.6)可変製品のサポート
製品バリエーションはWooCommerceのデフォルト機能であり、カスタマイズなしで可変製品を作成して使用できます。 ただし、カスタムソリューションを製品のバリエーションと互換性を持たせるには、WooCommerceのガイドラインに従う必要があります。
カスタムソリューションは、単一のページではなく、Webサイト全体と統合する必要があることに注意することが重要です。 したがって、これを念頭に置いて、可変製品に関連する利用可能なフックのいくつかを引き続き使用できます。 これらのフックは、可変の製品ページにある場合にのみトリガーされます。
-
woocommerce_before_variations_form
-
woocommerce_before_single_variation
-
woocommerce_single_variation
-
woocommerce_after_single_variation
2)WooCommerceテンプレートファイルを上書きする製品ページをカスタマイズします
WooCommerce製品ページをプログラムで編集する2番目の方法は、テンプレートファイルを上書きすることです。 この方法は前の方法よりも少しリスクが高いため、開始する前にサイトの完全バックアップを作成することをお勧めします。 方法がわからない場合は、WordPressサイトをバックアップする方法についてこのガイドを確認してください。
WooCommerceテンプレートファイルのオーバーライドは、子テーマ内の他のファイルのオーバーライドに似ているため、テーマを更新するときにカスタマイズが失われないように、子テーマを作成するか、プラグインがない場合はこれらのプラグインのいずれかを使用することをお勧めします。
2.1)メタ情報を編集する
メタ情報を編集するには、対応するデータの印刷を担当するテンプレートファイルを上書きする必要があります。 WooCommerceプラグインにあるmeta.php
ファイルは次のパスに従います: woocommerce/templates/single-product/meta.php
次に、子テーマファイルディレクトリを編集して、WooCommerceフォルダを作成します。 次に、その中にsingle-productという別のフォルダーを作成し、そこにmeta.php
ファイルを貼り付けます: Child_theme/woocommerce/single-product/meta.php
この後、 meta.php
ファイルを編集して、フロントエンドで変更を確認できるようになります。 次のmeta.php
サンプルファイルは次のようになります。
- SKUのラベルをIDに変更します
- タグを[公開済み]に変更します
- カテゴリラベルを削除します
グローバル$ product; ?> <div class = "product_meta"> <?php do_action( 'woocommerce_product_meta_start'); ?> <?php if(wc_product_sku_enabled()&&($ product-> get_sku()|| $ product-> is_type( 'variable'))):?> <span class = "sku_wrapper"> <?php esc_html_e( 'ID:'、 'woocommerce'); ?> <span class = "sku"> <?php echo($ sku = $ product-> get_sku())? $ sku:esc_html __( 'N / A'、 'woocommerce'); ?> </ span> </ span> <?php endif; ?> <?php echo wc_get_product_category_list($ product-> get_id()、 '、'、 '<span class = "posted_in">' ._n( ''、 ''、count($ product-> get_category_ids())、 'woocommerce ')。' '、' </ span> '); ?> <?php echo wc_get_product_tag_list($ product-> get_id()、 '、'、 '<span class = "tagged_as">' ._n( '公開元:'、 '公開元:'、count($ product-> get_tag_ids ())、 'woocommerce')。 ''、 '</ span>'); ?> <?php do_action( 'woocommerce_product_meta_end'); ?> </ div>
2.2)特定の製品カテゴリのカスタムテンプレートに切り替える
それでは、もっと複雑なタスクを試してみましょう。 現在の商品が特定のカテゴリに属している場合にのみ、単一の商品テンプレートを上書きします。
2.2.1)single-product.phpファイルを編集します
まず、 single-product.php
ファイルをコピーして、子テーマフォルダーのWooCommerceディレクトリに貼り付けます。
Child_theme/woocommerce/single-product.php
次に、ファイルを開き、37行目を確認しますwc_get_template_part('content','single-product');
これがcontent-single-product.php
ファイルの動作であり、現在の製品のすべての要素を印刷してループを完了し、レイアウトを構築します。
製品が指定されたカテゴリに属している場合にのみこのファイルをオーバーライドするため、37行目を削除しますwc_get_template_part( 'content', 'single-product' );
次のスクリプトに置き換えます。
$ terms = wp_get_post_terms($ post-> ID、 'product_cat'); $ category = wp_list_pluck($ terms、 'slug'); if(in_array( 'posters'、$ categorys)){ wc_get_template_part( 'content'、 'single-product-posters'); } それ以外 { wc_get_template_part( 'content'、 '単一製品'); }
WooCommerceが提供するサンプル製品を使用しているため、この例で使用している「ポスター」というカテゴリがあります。 「ポスター」をウェブサイトの既存の製品カテゴリに置き換えるだけです。
すべての製品カテゴリのスラッグは、メインのWordPressダッシュボード>製品>カテゴリで見つけることができることを忘れないでください。
2.2.2)新しいcontent-single-product.phpファイルを作成します
次に、デフォルトのcontent-single-product.php
ファイルをオーバーライドする新しいファイルを作成する必要があります。 このファイルの名前には、カテゴリスラッグが含まれます。
上記の例を見て、 content-single-product-posters.php
ファイルがどのように呼び出されるかを確認してください。 ファイルの名前は前の手順のコードと一致する必要があるため、これは重要です。したがって、ファイルの名前はcontent-single-product-/*YOURCATEGORYSLUG*/.php
ある必要があります。
このように、 wc_get_template_part( 'content', 'single-product-YOURCATEGORY' )
はcontent-single-product-YOURCATEGORY.php
ファイルをトリガーし、デフォルトのWooCommerceテンプレートファイルをオーバーライドします。
子テーマのWooCommerceフォルダーにデフォルトのcontent-single-product.php
ファイルを貼り付け、上記の手順に従って名前を変更し、いくつかのエディションを作成してテストします。
2.2.3)新しいcontent-single-product.php
ファイルを編集するカスタムテンプレートを作成します
これは、現在の商品が「ポスター」カテゴリに属している場合にのみ表示されるサンプル商品ページです。 いくつかのコンテンツを追加し、要素を追加および削除し、それらを並べ替え、いくつかのショートコードを実行したことがわかります。
基本的な例ですが、テンプレートページで何ができるかがわかり、新しい可能性を探ることができます。
//商品概要要素を削除します remove_action( 'woocommerce_single_product_summary'、 'woocommerce_template_single_title'、5); remove_action( 'woocommerce_single_product_summary'、 'woocommerce_template_single_rating'、10); remove_action( 'woocommerce_single_product_summary'、 'woocommerce_template_single_excerpt'、20); remove_action( 'woocommerce_single_product_summary'、 'woocommerce_template_single_add_to_cart'、30); remove_action( 'woocommerce_single_product_summary'、 'woocommerce_template_single_price'、10); //カスタムコンテンツ printf( '<h1>これは<b>'。$ post-> post_name。 '</ b>ポスター</ h1>'); printf( '<h4>「ポスター」カテゴリの製品用に完全にカスタマイズされた製品ページ</ h4>'); // 説明 printf( '<h5>'。$ post-> post_excerpt。 '</ h5>'); //サムネイル do_action( 'woocommerce_before_single_product_summary'); //メタを追加 do_action( 'woocommerce_single_product_summary'); //ショートコード echo do_shortcode( '[
add_to_cart show_price = "false" class = "my-addtocart"]
'); echo "<h3>連絡先:</ h3>"。do_shortcode( '[wpforms]'); echo "<h3>その他のポスター:</ h3>"。do_shortcode( '[
product_category category = "posters" orderby = "desc" limit = "4"]
');
フロントエンドを確認すると、次のように表示されます。 グローバルpostオブジェクトを使用していることに注意してください。 var_dump($post);
現在の製品に関連するすべての利用可能な情報を表示します。 サンプルスクリプトで製品の説明を使用して行ったのと同じように、そのデータを使用できます: $post->post_excerpt
。
3)CSSスクリプトを使用して製品ページをカスタマイズします
WooCommerce製品ページ(およびその他のページ)をプログラムで編集するもう1つの便利で簡単な方法は、CSSコードを使用することです。 これは、製品ページのスタイルを設定し、ビジネスのルックアンドフィールを与えるのに役立ちます。
- まず、CSSスクリプトをそこに追加できるように、子テーマに.css拡張子の付いた新しいファイルを作成する必要があります。 見つけやすいように、
single-product.css
などの名前を付けることをお勧めします。 - 次に、ファイルを
functions.php
およびstyle.css
ファイルと同じレベルの子テーマのメインフォルダーに配置します。 - その後、子テーマの
functions.php
ファイルに次のスクリプトを貼り付け、必要に応じてCSSファイルの名前を置き換えます。
- まず、CSSスクリプトをそこに追加できるように、子テーマに.css拡張子の付いた新しいファイルを作成する必要があります。 見つけやすいように、
add_action( 'wp_enqueue_scripts'、 'load_custom_product_style'); function load_custom_product_style(){ if(is_product()){ wp_register_style( 'product_css'、get_stylesheet_directory_uri()。 '/ single-product.css'、false、 '1.0.0'、 'all'); wp_enqueue_style( 'product_css'); } }
if(is_product())
条件は、現在のページが製品ページであるかどうかをチェックします。 これにより、CSSファイルが製品ページでない場合に不必要にロードされるのを防ぐことができます。
4.このスニペットを追加すると、カスタムCSSルールをCSSファイルに追加することで、製品ページのスタイルを編集できるようになります。
この方法は非常に単純で、迅速で簡単な解決策を提供しますが、場合によっては理想的ではない可能性があります。 CSSはフロントエンドから編集できるため、ユーザーがブラウザー開発ツールの使用方法を知っている場合は、CSSを編集することで非表示の要素を簡単に表示できます。
CSSを使用してWooCommerceの単一製品ページを編集する
CSSを少し使用して製品ページで実行できる変更のその他の例をいくつか見てみましょう。
次のスクリプトを適用するには、WordPressダッシュボードで、 [外観]> [カスタマイズ]> [追加のCSS]に移動します。
タイトルのフォントサイズを変更する
これにより、ページの製品タイトルのフォントサイズが32に変更されます。コードを調整するだけで、必要なサイズを選択できます。
.woocommerce div.product .product_title { フォントサイズ:32px; }
タイトルの色を変更する
商品ページのタイトルの色をカスタマイズすることもできます。 これを行うには、次のコードを使用して色を調整します。 この例では、オレンジを使用しています。 このような16進コードセレクターを使用して、必要な色を選択することをお勧めします。
.woocommerce div.product .product_title { 色:#FFA500; }
[今すぐ購入]ボタンの色を変更します
同様に、[今すぐ購入]ボタンの色を変更できます。 この例では、ドジャーブルーを使用していますが、コードを調整することで、他の色を選択できます。
.woocommerce div.product .button { 背景:#1E90FF; }
結論
要約すると、オンラインストアをカスタマイズすることは、競合他社から目立つための鍵です。 商品ページはどの店舗でも最も重要なページの一部であり、カスタマーエクスペリエンスを向上させ、売り上げを伸ばすためにできることはたくさんあります。
このためにプラグインを使用することもできますが、コーディングのスキルがある場合は、WooCommerce製品ページをプログラムで編集することをお勧めします。 追加のツールをインストールすることなく、ストアの要素をカスタマイズするための多くの柔軟性を提供します。 このガイドでは、3つの異なる方法で製品ページをカスタマイズする方法を見てきました。
- フックを使用する
- WooCommerceテンプレートのオーバーライド
- CSSスクリプトを使用
可能であれば、テンプレートファイルを上書きするのではなく、WooCommerceフックを使用するようにしてください。 これはWordPressが推奨するベストプラクティスの1つであり、リスクが少なくなります。 ただし、関数やオブジェクトを含む複雑なタスクの場合は、テンプレートファイルを編集する必要がある場合があります。 両方のテクニックを組み合わせることができれば、ストアで好きなものをカスタマイズできるようになります。
最後に、このチュートリアルで使用したすべてのサンプルスクリプトを含む完全な子テーマを見てください。 ストアをカスタマイズする方法の詳細については、次のガイドを確認してください。
- WooCommerceテンプレートファイルのカスタマイズ方法を学ぶ
- WooCommerceショップページをカスタマイズする方法
- WooCommerceの[カートに追加]ボタンをカスタマイズします
- WooCommerce関連製品を削除する方法
- WooCommerceチェックアウトを編集する方法(コーディングとプラグイン)
チュートリアルに従って問題が発生しましたか? 以下のコメントセクションでお知らせください。できる限りサポートさせていただきます。