与父

时间:2016-11-06 21:10:02

标签: wordpress woocommerce customization

我正在WordPress 4.6.1上设置Woocommerce 2.6.7。

我在WooCommerce设置/产品展示中的设置:

'商店页面显示'='显示类别'
'默认类别显示'='显示子类别'。

我的目标是让Shop页面和显示Subcategories的页面的布局显示为3列,如屏幕截图:

screenshot1

要使实际显示属于类别或子类别的产品的页面显示在一列中。我是Stack Overflow的新手,所以它不会让我发布超过2张图片,但如果你看到下一张图片,你就会明白这一点。

使用我在Woocommerce文档中找到的一些CSS和代码片段,我已经设法按照我想要的方式显示属于类别的产品。

  add_filter('loop_shop_columns', 'loop_columns');
    if (!function_exists('loop_columns')) {
    function loop_columns() {
    if ( is_product_category() || is_product_tag() ) {
    return 1;
    } 
    // for other archive pages and shop page
    else { 
    return 3;
    }}}

但现在我的SubCategories也显示在一列中,如下所示:

screenshot2

如何使此页面显示3列,例如在商店页面上,而不影响产品的1列显示?

基本上,由于我已经按照我想要的方式展示了商店,通过Woocommerce产品展示设置,我想我需要一种方法来仅定位具有父级的子类别,并让它们显示3列。

欢迎任何想法或建议。

1 个答案:

答案 0 :(得分:0)

经过一些试验和错误后,我找到并修改了我在以下位置找到的代码: This site

最困难的是获取进入functions.php的代码。 其余的只是CSS。

这完成了我的工作:

function ym_are_there_subcategories() {
global $wp_query;

$current_page = get_queried_object();
$children = get_term_children( $current_page->term_id, 'product_cat' );

return ( empty( $children ) ? false : true);
}


add_filter( 'loop_shop_columns', 'loop_columns' );
if ( ! function_exists( 'loop_columns' ) ) {
function loop_columns() {

if ( is_shop() || ym_are_there_subcategories()  ) {

return 3; 
} else {
return 1; 
} // end if subcats
} // end loop_columns()
} // end if function_exists

我希望别人觉得它很有用。这对我来说是一个障碍,持续了几天。

显示SubCategories的页面现在如下所示:

screenshot