Для SEO вам может понадобиться выстроить иерархическую структуру ссылок для страниц woocommerce-product. По-умолчанию woocommerce генерирует такие ссылки:
/product/product_category/product_name
вместо:
/product/catgory/sub_category/product_category/product_name
Для того, чтобы получить нужную нам структуру просто добавляем следующий код в файл functions.php вашей темы. Он уберет стандартный фильтр woocommerce “post_type_link” и заменит его новым.
remove_filter( 'post_type_link', 'woocommerce_product_cat_filter_post_link', 10, 2 ); // для версии woocommerce ниже 2.0 remove_filter( 'post_type_link', 'woocommerce_product_post_type_link', 10, 2 ); // для версии woocommerce >= 2 add_filter( 'post_type_link', 'woocommerce_subcategory_permalink', 10, 2 ); function woocommerce_subcategory_permalink( $permalink, $post ) { // Прекращаем работу, если запись не является товаром if ( $post->post_type !== 'product' ) return $permalink; // Прекращаем работу, если тег перезаписи местоположения не находится в генерируемой ссылке if ( false === strpos( $permalink, '%product_cat%' ) ) return $permalink; // Получаем пользовательскую таксономию, используемую этой записью $terms = get_the_terms( $post->ID, 'product_cat' ); if ( empty( $terms ) ) { $permalink = str_replace( '%product_cat%', _x('product', 'slug', 'woocommerce'), $permalink ); } else { $first_term = array_shift( $terms ); // Получаем иерархическую product_category $parents = woo_get_term_parents( $first_term->term_id, 'product_cat' ); $permalink = str_replace( '%product_cat%/', $parents, $permalink ); } return $permalink; } if ( ! function_exists( 'woo_get_term_parents' ) ) { function woo_get_term_parents( $id, $taxonomy ) { $chain = ''; $parent = &get_term( $id, $taxonomy ); if ( is_wp_error( $parent ) ) return $parent; $name = $parent->slug; if ( $parent->parent && ( $parent->parent != $parent->term_id ) ) { $chain .= woo_get_term_parents( $parent->parent, $taxonomy); } $chain .= $name."/"; return $chain; } // End woo_get_term_parents() }
VN:F [1.9.22_1171]