Добрый день!
Скажите пожалуйста уже не первый день бьюсь над решением "СЕО проблемы".
Не совсем корректно отображаются ссылки т.е.: в категориях ссылки вида "сайт/shop/страница каталога/ страница подкаталога" при переходе на товар "сайт/tovar/страница каталога/наименование товара"
такое получается при оставлении в произвольной основе /tovar/%product_cat% (если tovar на shop менять перестают показываться товары в категориях, если удалить tovar он автоматически добавляется после сохранения.
На сайте существуют каталоги и подкаталоги, перепробовал кучу разных вариаций настроек постоянных ссылок, но ничего не помогает.
При разных настройках с одинаковой основой(shop) получается добиться либо отображения каталогов и подкаталогов либо товаров и того и другого не выходит.
На одном сайте нашел подобный скрипт решавший данную проблему в старых версиях, но переделать его корректно не получается(ссылка на первоисточник wpincode.com/dobavlyaem-podkategorii-v-postoyannye-ssylki-v-woocommerce/)
remove_filter( 'post_type_link', 'woocommerce_product_cat_filter_post_link', 10, 2 ); // для версии woocommerce ниже 2.0
remove_filter( 'post_type_link', 'wc_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()
}
Возможно кто-то знает как и что в нем поменять или уже есть другое решение для подобной проблемы?