@MrSusua

Почему не работает перезапись URL в WordPress?

Добрый день!

Есть функция, которая переделывает URLы:
из: site.ru/product/salat_cezar
в: site.ru/463

Так вот, в ней срабатывает только последнее правило перезаписи (product_3). Почему не срабатывают первые два правила (product и product_2)? Почему срабатывает только последнее правило и не работают первые два?

Сама функция:

function fun_798668( $link, $post = 0 ) {
  if ( $post->post_type == 'product' ) {
      return home_url( '/' . $post->ID );
  } elseif ( $post->post_type == 'product_2' ) {
      return home_url( '/' . $post->ID );
  } elseif ( $post->post_type == 'product_3' ) {
      return home_url( '/' . $post->ID );
  } else {
      return $link;
  }
}

add_filter( 'post_type_link', 'fun_798668', 1, 3 );




function fun_798686() {
  add_rewrite_rule(
    '([0-9]+)?$',
    'index.php?post_type=product&p=$matches[1]',
    'top'
  );
  add_rewrite_rule(
    '([0-9]+)?$',
    'index.php?post_type=product_2&p=$matches[1]',
    'top'
  );
  add_rewrite_rule(
    '([0-9]+)?$',
    'index.php?post_type=product_3&p=$matches[1]',
    'top'
  );
}

add_action( 'init', 'fun_798686' );
  • Вопрос задан
  • 410 просмотров
Пригласить эксперта
Ответы на вопрос 1
dimasmagadan
@dimasmagadan
правила срабатывают в порядке очередности - кто первый встал, того и тапки.
как доходит до первого подходящего правила, выполнение заканчивает.

вам нужно оставить только одно правило
как-то так в нем прописать
index.php?post_type=product_2,product_1,product_3&
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы