Дубли страниц. Как убрать?
Есть произвольные типы записей "Store" и "Promocode". У "Promocode" есть таксономия "Offers". Была задача для записей типа "Promocode" привести url к виду site.com/store/%store%/promocode/%offers%/%promocode%. Для этого у каждой записи типа "Store" появилась дочерняя страница со слагом "promocode" + в functions.php добавлен код
function my_add_rewrite_rules_promocode() { add_rewrite_tag('%promocode%', '([^/]+)','promocode='); add_permastruct('promocode', '/store/%store%/promocode/%offers%/%promocode%', false); add_rewrite_rule('^store/([^/]+)/promocode/([^/]+)/([^/]+)/?$','index.php?promocode=$matches[3]&offers=$matches[2]','top'); } add_action( 'init', 'my_add_rewrite_rules_promocode' ); function my_permalinks_promocode($permalink, $post, $leavename) { $post_id = $post->ID; if($post->post_type != 'promocode' || empty($permalink) || in_array($post->post_status, array('draft', 'pending', 'auto-draft'))) return $permalink; $parent = get_post_meta( $post->ID, 'stores_ids' , true ); $parent_post = get_post( $parent ); $tax_name = 'offers'; $offf = get_the_terms( $post->ID, $tax_name ); $permalink = str_replace('%store%', $parent_post->post_name, $permalink); $permalink = str_replace('%offers%', $offf[0]->slug, $permalink); return $permalink; } add_filter('post_type_link', 'my_permalinks_promocode', 10, 3);
В итоге ссылки пришли к нужному виду: site.com/store/%store%/promocode/%offers%/%promocode%. Работають.
НО!
Если в урл вместо %store% и/или %offers% вписать любую белиберду, то запись открывается, как ни в чём не бывало, вместо того, чтоб отдать 404.
Как это побороть?