0

标题应该让您对我的不幸事件有一个很好的了解。我正在开发一个用 wordpress 制作并使用 WooCommerce 的项目,经过大量头脑风暴并考虑了可能的妥协,我已经达到了我非常确定我必须进入 php 代码以方便地解决问题的地步.

问题是我有以下网站:

在此处输入图像描述

您可能已经注意到,所有产品类别都混杂在一起,我需要做的就是将它们分为两大类:食品和饮料。我把 woocommerce 可以通过其内置功能做的事情变成了我无法让它工作,所以我想我必须编写自己的函数。现在,如果你们中的任何人知道我实际上可以用我拥有的东西来做到这一点,如果有人告诉我,我会很高兴。如果不是,我需要创建一个函数,该函数实际上可以选择属于父类别的所有类别或类似的东西。

public function product_categories( $atts ) {
        global $woocommerce_loop;

        extract( shortcode_atts( array (
            'number'     => null,
            'orderby'    => 'name',
            'order'      => 'ASC',
            'columns'    => '4',
            'hide_empty' => 1,
            'parent'     => ''
            ), $atts ) );

        if ( isset( $atts[ 'ids' ] ) ) {
            $ids = explode( ',', $atts[ 'ids' ] );
            $ids = array_map( 'trim', $ids );
        } else {
            $ids = array();
        }

        $hide_empty = ( $hide_empty == true || $hide_empty == 1 ) ? 1 : 0;

        // get terms and workaround WP bug with parents/pad counts
        $args = array(
            'orderby'    => $orderby,
            'order'      => $order,
            'hide_empty' => $hide_empty,
            'include'    => $ids,
            'pad_counts' => true,
            'child_of'   => $parent
        );

        $product_categories = get_terms( 'product_cat', $args );

        if ( $parent !== "" )
            $product_categories = wp_list_filter( $product_categories, array( 'parent' => $parent ) );

        if ( $number )
            $product_categories = array_slice( $product_categories, 0, $number );

        $woocommerce_loop['columns'] = $columns;

        ob_start();

        // Reset loop/columns globals when starting a new loop
        $woocommerce_loop['loop'] = $woocommerce_loop['column'] = '';

        if ( $product_categories ) {

            woocommerce_product_loop_start();

            foreach ( $product_categories as $category ) {

                woocommerce_get_template( 'content-product_cat.php', array(
                    'category' => $category
                ) );

            }

            woocommerce_product_loop_end();

        }

        woocommerce_reset_loop();

        return '<div class="woocommerce">' . ob_get_clean() . '</div>';
    }

我将其确定为不正常的威胁性 WooCommerce 功能。帮助。请帮我 :(

4

1 回答 1

2

使用 WooCommerce 的内置[product_categories]短代码怎么样?您可以通过id=""属性传递所需的类别。

于 2014-02-14T00:59:48.957 回答