WooCommerce去除基础链接后产品和分类slug冲突的解决方案

标签: 

正在查看 0 个帖子
  • 作者
    帖子
  • 孙锡源
    • 文章数量: 704
    @ibadboy
    楼主

    WooCommerce官方不推荐去除URL上的基础链接(product和product-category),见此链接:https://docs.woocommerce.com/document/removing-product-product-category-or-shop-from-the-urls/

    官方的理由主要是这样会导致性能损耗。

    但其实这样做了之后还会导致分类和产品的URL产生冲突。比如说分类的slug是plugins,然后有一个产品的slug也是plugins……

    这时你访问:/plugins时,WordPress就不知道你究竟访问的是分类还是产品了。

    此时你可以通过以下代码强制指定访问/plugins时返回plugins分类:

    add_filter( 'request', function ( $query ) {
    	$url = $_SERVER['REQUEST_URI'];
    
    	$pos = strpos( $url, '?' );
    	if ( $pos ) {
    		$url = substr( $url, 0, $pos - strlen( $url ) );
    	}
    
    	$pos = strpos( $url, '#' );
    	if ( $pos ) {
    		$url = substr( $url, 0, $pos - strlen( $url ) );
    	}
    
    	switch ( $url ) {
    		case '/store/plugins':
    			return array( 'product_cat' => 'plugins' );
    		default:
    			return $query;
    	}
    }, 9999 );

     

    如果你想强制指定更多分类,可以在switch的case里多写几条规则。

    来自张家口市, 河北省, 中国
正在查看 0 个帖子
  • 哎呀,回复话题必需登录。

话题信息