サードパーティ / カスタム / 非 WooCommerce テーマの互換性

ほとんどの場合、 WooCommerce テンプレートはほとんどの WordPress のテーマとうまく統合されます。
デフォルトの WooCommerce コンテンツラッパーが選択したテーマに一致しない場合に問題が発生する可能性があります。 WooCommerce のページであなたのレイアウトと違って、サイドバーを期待指定ない場所に表示されることがあります。
WooCommerce は独自のテンプレートを使用してこれらのページを表示し、 WooCommerce はテーマが使用するマークアップを正確に知ることができないため、ショップページ、単一の製品ページ、分類ページ(カテゴリとタグ)に影響を与える可能性があります。
他のページ(チェックアウト、カート、アカウント)はテーマの page.php テンプレートを使用するため、影響を受けません。

これを解決する方法は2つあります。

  • フックの使用(上級ユーザー/開発者向け)
  • テーマの中で woocommerce_content()関数を使う

woocommerce_content()関数を使う

このソリューションを使用すると、 WooCommerce 分類およびポストタイプのすべての表示に使用される新しいテンプレートページをテーマ内に作成できます。 簡単な多様性のある方法ですが、このテンプレートはすべての WC の分類(商品カテゴリなど)と投稿タイプ(商品アーカイブ、単一商品ページ)に使用されるという欠点があります。 開発者は代わりにフックを使用することをお勧めします。

このテンプレートページを設定するには:

page.php を複製する

テーマの page.php ファイルを複製し、 woocommerce.php という名前を付けます。
このファイルは次のようにしてください: wp-content/themes/YOURTHEME/woocommerce.php。

ページを編集(woocommerce.php)

新しく作成した woocommerce.php をテキストエディタまたはあなたが選んだエディタで開きます。

ループ部分を置き換える

次に、ループを見つける必要があります(The_Loopを参照)。 ループは通常、次のように始まります:

<?php if ( have_posts() ) :

通常は次のように終わります:

<?php endif; ?>

これはテーマによって異なります。 見つけたら削除してください。 その代わりに :

<?php woocommerce_content(); ?>

これにより、代わりに WooCommerce ループが使用されます。 ファイルを保存します。これで終わりです。

注意:woocommerce.phpをテーマのフォルダに作成すると、woocommerce.phpがarchive-product.phpより優先されるため、woocommerce / archive-product.phpカスタムテンプレートを上書きすることはできません。 これは表示の問題を防ぐためのものです。

フックを使う

フックメソッドは、 woocommerce_content を使用するよりも複雑ですが、より柔軟です。 テーマを作成するときに使用する方法と似ています。 また、20から20までのテーマにうまく統合するために使用する方法です。

テーマの functions.php ファイルに数行を挿入します。

まず、 WooCommerce ラッパーをアンフックします。

remove_action( 'woocommerce_before_main_content', 'woocommerce_output_content_wrapper', 10);
remove_action( 'woocommerce_after_main_content', 'woocommerce_output_content_wrapper_end', 10);

次に、テーマに必要なラッパーを表示するために、独自の関数をフックします。

add_action('woocommerce_before_main_content', 'my_theme_wrapper_start', 10);
add_action('woocommerce_after_main_content', 'my_theme_wrapper_end', 10);

function my_theme_wrapper_start() {
  echo '<section id="main">';
}

function my_theme_wrapper_end() {
  echo '</section>';
}

マークアップがテーマのマークアップと一致していることを確認してください。 使用するクラスや ID が不明な場合は、テーマの page.php を参照してください。

WooCommerce サポートを宣言する

あなたのテーマが WooCommerce を完全にサポートしていることになったら、「テーマは WooCommerce サポートを宣言していません」というメッセージを隠すコードで宣言する必要があります。 あなたのテーマサポート機能に以下を追加してこれを行います:

すべてが失敗した場合…

上記の方法を試すことができず、開発者がアクセスできない場合は、すぐに使えるWooCommerceのテーマを見てみることをお勧めします。
また、WooCommerce のコア開発を行っている日本語編集をしている会社のサイトへ開発を依頼できます。

英語原文(Third party / custom / non-WC theme compatibility)