提前抱歉我的近似英语。我想在特定产品类别的woocommerce上更改产品页面样式(不要显示图片和其他一些重要的布局更改)。已经制作它并且它可以工作,问题是我想在一个页面上显示这些产品。我尝试使用woocommerce集成短代码[product_page id = $ id],问题是我在content-single-product.php(在woocommerce文件夹中)创建的自定义样式和布局不使用此短代码。我试图在class-ws-shortcodes.php(woocommerce文件夹)上复制我的脚本,但它没有用。我应该怎么做才能在特定页面上显示产品,这些产品页面的真实风格(我创建的是自定义产品),而不是woocommerce短信代码?
提前感谢您的回答
答案 0 :(得分:3)
有两种方法可以实现这一点,这取决于您是要编辑single-product.php
还是content-single-product.php
。两者都会让你得到相同的最终结果。
要执行前者,您可以使用默认的WordPress功能,并通过template_include
add_filter( 'template_include', 'so_29984159_custom_category_template' );
function so_29984159_custom_category_template( $template ){
if ( is_single() && get_post_type() == 'product' && has_term( 'custom_category', 'product_cat' ) ) {
$template = locate_template( 'single-product-custom.php' );
}
return $template;
}
或者,如果您更愿意创建自定义content-product.php
模板部件,则可以使用WooCommerce的wc_get_template_part
,其工作方式几乎相同。
从技术上讲,我认为你可以使用相同的条件逻辑,但我在这里调整它以指出WooCommerce在过滤器上提供的变量。
add_filter( 'wc_get_template_part', 'so_29984159_custom_content_template_part', 10, 3 );
function so_29984159_custom_content_template_part( $template, $slug, $name ){
if ( $slug == 'content' && $name == 'product' && has_term( 'custom_category', 'product_cat' ) ) {
$template = locate_template( 'content-product-custom.php' );
}
return $template;
}
在任何一种情况下,single-product-custom.php
或content-product-custom.php
都会出现在主题的根文件夹中。要将它们放在其他位置,只需更改locate_template()
参数中的路径。
答案 1 :(得分:0)
您无法在wordpress的文件(即page.php)中进行编码以修改woocommerce页面。错误的方式。您只需将WooCommerce页面覆盖到主题文件夹中,然后修改您要执行的任何页面。所有模板/页面都位于woocommerce / templates文件夹中。
您可以在这里找到文档。
http://docs.woothemes.com/document/template-structure/
答案 2 :(得分:0)
为单一产品视图编辑woocommerce / templates / content-single-product.php