WoodCommerce属性的WordPress URL重写
我使用WooCommerce和“YITH WooCommerce Ajax导航”插件来过滤品牌。结果是一个链接显示为WoodCommerce属性的WordPress URL重写,wordpress,url,mod-rewrite,seo,woocommerce,Wordpress,Url,Mod Rewrite,Seo,Woocommerce,我使用WooCommerce和“YITH WooCommerce Ajax导航”插件来过滤品牌。结果是一个链接显示为https://example.com/products/racquets/tennis-racquets/?filter_brands=47 理想情况下,我希望使用https://example.com/products/racquets/tennis-racquets/brands/wilson 我尝试过使用Apache mod_重写规则,例如: RewriteRule ^pr
https://example.com/products/racquets/tennis-racquets/?filter_brands=47
理想情况下,我希望使用https://example.com/products/racquets/tennis-racquets/brands/wilson
我尝试过使用Apache mod_重写规则,例如:
RewriteRule ^products/racquets/tennis-racquets/?filter_brands=47 /products/racquets/tennis-racquets/wilson [QSA,L]
我还尝试过为functions.php
文件编写函数,但这两种方法似乎都不适用。下面是我尝试使用的代码示例
function brand_rewrite_rules() {
add_rewrite_rule( 'products/racquets/tennis-racquets/?filter_brands=47', 'products/racquets/tennis-racquets/wilson', 'top' );
flush_rewrite_rules();
}
add_action( 'init', 'brand_rewrite_rules' );
我确实尝试过更新我的永久链接设置,但该函数没有做任何事情。有人能提出解决方案吗?只需添加一个:
添加端点会为提供的位掩码指定的每个匹配位置创建额外的重写规则。还将创建一个与端点同名的新查询变量。端点定义后面的字符串提供此查询变量的值(例如,“/foo/bar/”
变为“?foo=bar”
)
<?php
/**
* Plugin Name: Add a Brand endpoint to the URLs
* Plugin URI: http://stackoverflow.com/a/24331768/1287812
*/
add_action( 'init', function()
{
add_rewrite_endpoint( 'brands', EP_ALL );
});
add_filter( 'query_vars', function( $vars )
{
$vars[] = 'brands';
return $vars;
});
/**
* Refresh permalinks on plugin activation
* Source: http://wordpress.stackexchange.com/a/108517/12615
*/
function WCM_Setup_Demo_on_activation()
{
if ( ! current_user_can( 'activate_plugins' ) )
return;
$plugin = isset( $_REQUEST['plugin'] ) ? $_REQUEST['plugin'] : '';
check_admin_referer( "activate-plugin_{$plugin}" );
add_rewrite_endpoint( 'brands', EP_ALL ); #source: http://wordpress.stackexchange.com/a/118694/12615
flush_rewrite_rules();
}
register_activation_hook( __FILE__, 'WCM_Setup_Demo_on_activation' );
$brand = get_query_var('brand') ? urldecode( get_query_var('brand') ) : 'Empty endpoint';
echo $brand;