WooCommerce分类标准的变化

时间:2015-02-17 17:42:52

标签: woocommerce

出于某种原因,在WooCommerce的最新更新之后,我的分类标准已经发生了变化。

他们离开了:

www.mysite.com/genre/dance to www.mysite.com/pa_genre/dance

可能是在后端没有任何改变,但前端的可视化有。 URL的突然变化不仅会影响我的网站内部链接,还会影响外部链接,如果不能快速修复,Google也会收集这404页。

我查看了WooCommerce文件,不知道在哪里查看,但是wc-attribute-functions.php显示以下包含对'pa_'位的引用。

如果有人想回到我原来的网址结构,那将非常感激。

    /**
     * Get a product attributes name.
     *
     * @param mixed $name
     * @return string
     */
    function wc_attribute_taxonomy_name( $name ) {
        return 'pa_' . wc_sanitize_taxonomy_name( $name );
    }

    /**
     * Get a product attributes label.
     *
     * @param mixed $name
     * @return string
     */
    function wc_attribute_label( $name ) {
global $wpdb;

if ( taxonomy_is_product_attribute( $name ) ) {
    $name = wc_sanitize_taxonomy_name( str_replace( 'pa_', '', $name ) );

    $label = $wpdb->get_var( $wpdb->prepare( "SELECT attribute_label FROM {$wpdb->prefix}woocommerce_attribute_taxonomies WHERE attribute_name = %s;", $name ) );

    if ( ! $label ) {
        $label = ucfirst( $name );
    }
} else {
    $label = ucwords( str_replace( '-', ' ', $name ) );
}

return apply_filters( 'woocommerce_attribute_label', $label, $name );
    }

    /**
     * Get a product attributes orderby setting.
     *
     * @param mixed $name
     * @return string
     */
    function wc_attribute_orderby( $name ) {
global $wpdb;

$name = str_replace( 'pa_', '', sanitize_title( $name ) );

$orderby = $wpdb->get_var( $wpdb->prepare( "SELECT attribute_orderby FROM " . $wpdb->prefix . "woocommerce_attribute_taxonomies WHERE attribute_name = %s;", $name ) );

return apply_filters( 'woocommerce_attribute_orderby', $orderby, $name );

}

1 个答案:

答案 0 :(得分:0)

在Woocommerce 2.3.5更新后我遇到了同样的问题,快速解决方法是为属性添加重写规则。

您可以将它添加到主题中的functions.php文件中:

add_action('init', 'add_genre_url');
function add_genre_url()
{
    add_rewrite_rule(
        '^genre/([^/]*)$',
        'index.php?pa_genre=$matches[1]',
        'top'
    );
    //flush_rewrite_rules();
}

在添加重写规则后,必须至少调用一次flush_rewrite_rules()函数,出于性能原因将它保留在init操作上并不是一个好主意。也许有人可以解决这个问题。