Дубли товаров woocommerce
Как исправить ситуацию с дублями товаров в wc, например товар доступен по ссылке сайт.ру/категория/товар и сайт.ру/категория/праовлоы/товар
я так понимаю нужно вместо
if( ! ( is_category() || is_tag() || is_tax() ) )
вставить
if( ! ( is_product() ) )
чтобы работало для страницы товара, но при такой конструкции происходит редирект на страницу сайт.ру/?taxonomy=&term=
либо же нужно чтобы при таком урле сайт.ру/категория/праовлоы/товар была 404
Там пример с таксономиями, у тебя с записями (вообще странно, вп записи автоматом редиректит на правильный УРЛ, у тебя там наверное чудо-плагин какой нить по изменению ЧПУ). Т.е. тебе нужно переделать код под посты, нужно заюзать get_permalink() вместо get_term_link(). Ну и проверку поменять как ты сказал на is_product():
add_action( 'template_redirect', 'check_301redirect_product_url', 9 );
function check_301redirect_product_url(){
if( ! is_product() )
return;
$qo = get_queried_object();
$post_url = get_permalink( $qo );
$parsed_url = parse_url( $_SERVER['REQUEST_URI'] );
if( strpos( $parsed_url['path'], wp_make_link_relative( $post_url ) ) === false ){
$redirect_to = isset( $parsed_url['query'] ) ? "$post_url?{$parsed_url['query']}" : $post_url;
wp_redirect( $redirect_to, 301 );
exit;
}
} подскажите пожалуйста, для категории товаров woocommerce сделал так, но страницы категорий перестают работать
add_action( 'template_redirect', 'check_301redirect_tax_url', 9 );
function check_301redirect_tax_url(){
if( ! is_product_category() )
return;
$qo = get_queried_object();
$term_url = get_category_link( $qo );
$parsed_url = parse_url( $_SERVER['REQUEST_URI'] );
if( strpos( $parsed_url['path'], wp_make_link_relative( $term_url ) ) === false ){
$redirect_to = isset( $parsed_url['query'] ) ? "$term_url?{$parsed_url['query']}" : $term_url;
wp_redirect( $redirect_to, 301 );
exit;
}
}
https://wp-kama.ru/question/rubriki-dostupny-po-raznym-url-adresam