Дубли товаров woocommerce

Как исправить ситуацию с дублями товаров в wc, например товар доступен по ссылке сайт.ру/категория/товар и сайт.ру/категория/праовлоы/товар

Заметки к вопросу:
anonym 1.9 года назад

я так понимаю нужно вместо

if( ! ( is_category() || is_tag() || is_tax() ) )

вставить

if( ! ( is_product() ) )

чтобы работало для страницы товара, но при такой конструкции происходит редирект на страницу сайт.ру/?taxonomy=&term=

anonym 1.9 года назад

либо же нужно чтобы при таком урле сайт.ру/категория/праовлоы/товар была 404

Kama 1.9 года назад

Там пример с таксономиями, у тебя с записями (вообще странно, вп записи автоматом редиректит на правильный УРЛ, у тебя там наверное чудо-плагин какой нить по изменению ЧПУ). Т.е. тебе нужно переделать код под посты, нужно заюзать 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;
	}

}
anonym 1.8 года назад

подскажите пожалуйста, для категории товаров 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;
	}

}