Reputation: 159
Maybe someone are able to help me. I want to change product attribute URL from pa_ to something else. (for example http://website.com/?pa_color=black to ?product_color=black.)
Any solution guys?
Best Regards
Upvotes: 1
Views: 5727
Reputation: 26
The functionality that allows you to use a custom base in your url instead of the pa_ in your product attribute are no longer standard with WooCommerce.
You will have to first make sure that you have set your taxonomy permalinks to the bases you would like the product urls to have. If you go into WordPress Dashboard > Settings > Permalink menu you can change the categories, terms and attributes to whatever makes the most sense for your product. By changing these preferences you can use a custom base on your products (be sure not to repeat bases within the taxonomy, this will create a conflict).
You will then need to add the following code to your theme's functions.php file:
// Change attribute rewrite rules
add_action('woocommerce_register_taxonomy', 'razorfrog_woo_register_taxonomy');
function razorfrog_woo_register_taxonomy() {
global $razorfrog_woo_attribute_labels;
$razorfrog_woo_attributes_labels = array();
if ( $attribute_taxonomies = wc_get_attribute_taxonomies() ) {
foreach ( $attribute_taxonomies as $tax ) {
if ( $name = wc_attribute_taxonomy_name( $tax->attribute_name ) ) {
$razorfrog_woo_attribute_labels[ $tax->attribute_label ] = $tax->attribute_name;
add_filter('woocommerce_taxonomy_args_'.$name, 'razorfrog_woo_taxonomy_args');
}
}
}
}
function razorfrog_woo_taxonomy_args($taxonomy_data) {
global $razorfrog_woo_attribute_labels;
if (isset($taxonomy_data['rewrite']) && is_array($taxonomy_data['rewrite']) && empty($taxonomy_data['rewrite']['slug'])) {
$taxonomy_data['rewrite']['slug'] = $razorfrog_woo_attribute_labels[ $taxonomy_data['labels']['name'] ];
}
return $taxonomy_data;
}
Hope this helps!
Upvotes: 1