自定义产品属性URL

时间:2016-11-11 15:49:32

标签: wordpress woocommerce

也许有人能够帮助我。我想将产品属性网址从 pa _ 更改为其他内容。 (例如http://website.com/?pa_color=black到?product_color = black。)

任何解决方案的人?

最好的问候

1 个答案:

答案 0 :(得分:1)

允许您在网址中使用自定义基础而非产品属性中的pa_的功能不再是WooCommerce的标准功能。

您必须首先确保已将分类法永久链接设置为您希望产品网址具有的基础。如果你进入WordPress仪表板>设置>永久链接菜单,您可以将类别,术语和属性更改为对您的产品最有意义的任何内容。通过更改这些首选项,您可以在产品上使用自定义基础(请确保不要在分类中重复基础,这会产生冲突)。

然后,您需要将以下代码添加到主题的functions.php文件中:

// 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;
}

希望这有帮助!