我要做的是美化标准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/
工作正常。
我该如何解决这个问题?
谢谢。