Wordpress中的漂亮Url



我使用插件按类别过滤WooCommerce产品。我想将过滤过程中生成的url更改为pretty url。

所以代替https://example.de/products/cars/?yith_wcan=1&product_cat=red,我想要https://example.de/products/cars/red/

插件默认不支持这个,所以我看add_rewrite_rule。

add_action('init', 'myplugin_rewrite_tag_rule', 10, 0);
function myplugin_rewrite_tag_rule() {
add_rewrite_tag( '%cars%', '([^&]+)' );
add_rewrite_rule('cars/([^/]*)/?','index.php?pagename=cars/?yith_wcan=1&product_cat=$matches[1]','top');
}

但是带过滤器的url/cars/没有出现

echo add_query_arg( $wp->query_vars, home_url() );

显示,非重定向url工作

我显示了永久链接,但它没有帮助。

可能它不工作,因为你还没有注册你的查询变量。试试这段代码。

function register_custom_query_vars($vars) {
$vars[] = "cars";
return $vars;
}
add_filter('query_vars', 'register_custom_query_vars');
function custom_rewrite_endpoint(){
add_rewrite_endpoint( 'cars', EP_ROOT | EP_PERMALINK | EP_CATEGORIES | EP_PAGES );
}
add_filter('init','custom_rewrite_endpoint');
/**
* uncomment this for 
* flushing rewrite rules after changes 
**/
//flush_rewrite_rules(true);

https://example.de/products/cars/red/

<?php echo get_query_var('cars'); ?>  

应该输出'red'。

然而,你的woocommerce插件可能仍然需要初始$_GET查询变量才能正常工作。您可以设置var -但不建议这样做:

$_GET['product_cat'] = $cars;

如果你已经为这个插件付费,最好坚持一个适当的集成重写功能。

相关内容

  • 没有找到相关文章