たとえば、カテゴリのコーヒーマシンと、コーヒーマシンの単一の製品テンプレートの1つのテンプレートがありますが、カテゴリのコーヒーの場合は、異なるsingle-product.phpテンプレートが必要です。これを実装するにはどうすればよいですか?私はこの投稿にアクセスできませんhttp://www.woothemes.com/support-forum/?viewtopic=83667しかし、WordPressのページとカテゴリは単純ですが、woocommerceでそれを行う方法は似ていますか?
たとえば、カテゴリのコーヒーマシンと、コーヒーマシンの単一の製品テンプレートの1つのテンプレートがありますが、カテゴリのコーヒーの場合は、異なるsingle-product.phpテンプレートが必要です。これを実装するにはどうすればよいですか?私はこの投稿にアクセスできませんhttp://www.woothemes.com/support-forum/?viewtopic=83667しかし、WordPressのページとカテゴリは単純ですが、woocommerceでそれを行う方法は似ていますか?
回答:
現在の製品のカテゴリーに応じて、single-product.phpを正しいテンプレートへのリダイレクトに変更できます。
そのためには、single-product.phpをテーマのwoocommerceフォルダーにコピーします。名前をsingle-product-default.phpなどに変更します。別のコピーを作成し、single-product-coffee.phpという名前を付けます。これに加えたい変更はすべて行うことができます。
次に、single-product.phpに単純な条件を追加して、適切なsingle-product- something .php にリダイレクトできます
if( has_term( 'coffee-maker', 'product_cat' ) ) {
$file = 'single-product-coffee.php';
} else {
$file = 'single-product-default.php';
}
global $woocommerce;
load_template( $woocommerce->template_url . $file );
製品IDを使用して、single-product.phpでリダイレクトを行いました。
次に、オーバーライドされたwoocommerceフォルダー(../your-theme/woocommerce/)に、single-product-product1.phpやデフォルトの製品テンプレート(single-product-default.php、これは単に以前のsingle-product.php)。
if($post->ID == '103'){
wc_get_template_part( 'single-product-product1' );
} else{
wc_get_template_part( 'single-product-default' );
}
私はこれを行いました(Woocommerce 2.1) 'content-single-product-{$ product_cat} .php'という名前のテーマのwoocommerceテンプレートに製品のテンプレートを作成し、製品にちなんで名付けられたテンプレートを検索する 'wc_get_template_part'フィルターを追加しますカテゴリー。これで、content-single-productテンプレートを製品カテゴリごとに上書きできます。
function my_custom_product_template($template, $slug, $name) {
if ($name === 'single-product' && $slug === 'content') {
global $product_cat;
$temp = locate_template(array("{$slug}-{$name}-{$product_cat}.php", WC()->template_path() . "{$slug}-{$name}-{$product_cat}.php"));
if($temp) {
$template = $temp;
}
}
return $template;
}
add_filter('wc_get_template_part', 'my_custom_product_template', 10, 3);