添加重写规则后,无法在商店页面上显示woocommerce产品

时间:2018-07-12 20:29:48

标签: php wordpress woocommerce

我要做的是美化标准woocommerce过滤器网址。

我的意思是将此过滤器URL sitename.com/shop/?color=blue更改为此sitename.com/shop/color-blue/

我添加了重写规则:

    add_action('init', 'filter_rewrite');
    function filter_rewrite() {
        $shop_page_id = get_option( 'woocommerce_shop_page_id' );
        $page_data = get_post( $shop_page_id );

        if( ! is_object($page_data) ) {
            return;
        }

        add_rewrite_rule(
            $page_data->post_name . '/color-([^/]+)/?$',
            'index.php?pagename=' . $page_data->post_name . '&color=$matches[1]',
            'top'
        );
    }

,然后更新了永久链接。

但是当我打开页面sitename.com/shop/color-blue/时,没有产品,并且Woocommerce产品过滤器小部件中出现了一些错误,例如

  

注意:尝试在第69行的SITEPATH / wp-content / plugins / woocommerce / includes / widgets / class-wc-widget-price-filter.php中获取非对象的属性“ post_count”

我正在使用标准的woocommerce归档产品循环来显示产品:

    <?php
    if ( woocommerce_product_loop() ) {
        if ( wc_get_loop_prop( 'total' ) ) {
            while ( have_posts() ) {
                the_post();

                /**
                 * Hook: woocommerce_shop_loop.
                 *
                 * @hooked WC_Structured_Data::generate_product_data() - 10
                 */
                do_action( 'woocommerce_shop_loop' );

                get_template_part( 'template-parts/part-product-preview' );
            }
        }

    } else {
        /**
         * Hook: woocommerce_no_products_found.
         *
         * @hooked wc_no_products_found - 10
         */
    ?>

函数wc_get_loop_prop( 'total' )返回0,而woocommerce_product_loop()返回1

页面sitename.com/shop/工作正常。

我该如何解决这个问题?

谢谢。

0 个答案:

没有答案